Urban Directory
Admin guide
Operating Urban Directory: review queue, communications, audit, system health.
Admin dashboard overview
- •Core: Dashboard, Overview, Directories, Categories, Businesses, Listings.
- •Operations: Reviews, Enquiries, Add-ons, Discovery, Business management.
- •Platform: Billing, Integrations, Communications, SEO, Users, Audit, Settings, System health, Operations.
- •The notification bell shows pending items requiring attention.
Listing review queue
- •Open Admin → Listings to see pending submissions.
- •Approve to publish the listing immediately.
- •Request changes with a clear note for the owner.
- •Return to draft to move the listing back to the owner.
- •Suspend or archive listings that should not be visible.
Notification bell and pending badges
Pending counts surface on Businesses and Listings in the sidebar. The bell consolidates new submissions and items that need admin attention.
Audit centre & system health
- •Audit centre records admin actions — use it to trace changes.
- •System health surfaces environment and integration status.
- •Do not modify audit rows manually.
Communications / ZeptoMail
- •App transactional emails use the ZeptoMail REST API.
- •Auth emails (signup/reset) still use Supabase Auth.
- •The config checklist shows whether server env vars are configured.
- •Test emails are admin-only and sent from /admin/communications.
- •Logs are stored in public.transactional_email_logs.
- •Email templates are currently code-based in src/lib/email/email-copy.ts.
- •Email sending is best-effort and must never block listing actions.
Planned: An Admin Email Template Manager is planned — edit transactional subjects/body, preview, send tests, restore defaults and version changes. Not built yet.
What not to change manually
- •Don't edit audit rows or transactional_email_logs directly.
- •Don't store SUPABASE_ service role keys with a VITE_ prefix.
- •Don't bypass the listing workflow by editing status fields in SQL unless you know exactly why.
Common admin troubleshooting
See the Troubleshooting page for: not authenticated on /admin/communications, ZeptoMail 401, sender rejected, log table missing, missing role, and more.