wacrm/docs/supabase-setup.md
Arnas Donauskas e46844d527
chore: add WhatsApp® on first mention across user-facing surfaces
Per Meta's brand-use guidance for third-party products, the registered
trademark symbol (®) should appear on the FIRST mention of "WhatsApp"
on each user-facing page. Subsequent mentions on the same page are
left plain.

Surfaces touched (one-per-page first mention):
- Landing hero badge ("Built on the official WhatsApp® Business API").
- src/lib/seo/site-config.ts: SITE_TAGLINE and SITE_DESCRIPTION
  (rendered into <title> and <meta description> on every page).
- src/app/opengraph-image.tsx: hero text in social-share image.
- Settings, Inbox connection banner, Automations page subtitle.
- README.md tagline.
- All public docs pages (docs/README.md, docs/whatsapp-setup.md,
  docs/getting-started.md, docs/supabase-setup.md,
  docs/environment-variables.md, docs/deployment-hostinger.md,
  docs/automations-and-cron.md, docs/architecture.md,
  docs/troubleshooting.md).

Out of scope: SITE_KEYWORDS (the meta-keywords array isn't
user-rendered text — putting ® on every keyword would look broken in
the meta tag).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 12:13:26 +03:00

2.6 KiB

Supabase setup

WaCRM uses Supabase for Postgres, authentication, row-level security (RLS), and (optionally) storage. You need one Supabase project per WaCRM deployment.

1. Create the project

  1. Sign in at https://supabase.com and create a new project.
  2. Pick the region closest to your users. Save the database password shown at creation time — you will not see it again.
  3. Wait for the project to provision (about a minute).

2. Grab your keys

Open Project Settings → API in the Supabase dashboard. Copy:

  • Project URL → NEXT_PUBLIC_SUPABASE_URL
  • anon / public key → NEXT_PUBLIC_SUPABASE_ANON_KEY
  • service_role key → SUPABASE_SERVICE_ROLE_KEY

Paste them into .env.local.

Do not commit the service-role key. It bypasses RLS entirely. The repo's .gitignore already excludes .env.local — keep it that way.

3. Run the migrations

All schema changes live in supabase/migrations/ as plain SQL and are idempotent (safe to re-run). The simplest way to apply them:

Option A — SQL Editor (quickest)

  1. Open SQL Editor in the Supabase dashboard.
  2. For each file in supabase/migrations/, in numeric order:
    • 001_initial_schema.sql
    • 002_pipelines_enhancements.sql
    • 003_broadcast_recipient_wamid.sql
    • 004_contact_delete_set_null.sql
    • 005_broadcast_counts_incremental.sql
    • 006_automations.sql
    • 007_automations_increment_counter.sql
  3. Paste into the editor and run. Each file prints its own status.

Option B — Supabase CLI

npm install --global supabase
supabase login
supabase link --project-ref <your-project-ref>
supabase db push

The CLI applies every file in supabase/migrations/ on top of the linked project.

4. Verify

Open Table Editor in the Supabase dashboard. You should see tables including profiles, contacts, conversations, messages, pipelines, broadcasts, automations, and whatsapp_config. If any are missing, a migration failed — re-run it and check the SQL output.

5. Auth settings

Under Authentication → Providers, confirm:

  • Email is enabled (default).
  • Confirm email is on for production, off for local if you want frictionless testing.

Under Authentication → URL Configuration, add your production URL (e.g., https://crm.example.com) to the allow-list so password-reset emails link back correctly.

6. (Optional) Storage

WaCRM downloads WhatsApp® media through Meta's /download endpoint and currently relays it on demand rather than caching it in Supabase Storage. No bucket setup is required for a default install.

Next step

WhatsApp setup →