Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ArnasDon/wacrm/llms.txt

Use this file to discover all available pages before exploring further.

Wacrm is a standard Next.js 16 application — it runs anywhere that Node.js 20 or later is available. There is no Docker image required, no Kubernetes cluster to manage, and no proprietary runtime to learn. Pick the hosting path that fits your team, paste your environment variables, and deploy.

Post-deploy checklist

Run through these steps after every fresh deployment to confirm everything is wired up correctly before handing the CRM to your team.
1

Verify the webhook endpoint responds to Meta's challenge

In the Meta for Developers dashboard, go to WhatsApp → Configuration and click Verify next to your webhook URL. Meta sends a GET request with hub.mode=subscribe — Wacrm should respond with 200 OK and the challenge string. A 403 means the verify token doesn’t match what you saved in Settings → WhatsApp; a 502 means the app isn’t running or the URL is wrong.
2

Send a test WhatsApp message

Send a WhatsApp message from any phone to your registered business number. The message should appear in the Wacrm Inbox within a few seconds. If it doesn’t appear, check your application logs for [webhook] rejected request with invalid signature (wrong META_APP_SECRET) or No config found for phone_number_id (phone number ID mismatch in Settings → WhatsApp).
3

Confirm the dashboard loads with correct stats

Log in to the dashboard and verify that the Overview page loads without errors and shows your account’s activity feed. A blank dashboard usually indicates a Supabase connection issue — double-check NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY.
4

Configure the automations cron (if you use Wait steps)

Automations with Wait steps require a periodic cron job to drain pending executions. Set AUTOMATION_CRON_SECRET to a long random string:
# Generate a secret:
openssl rand -hex 32

AUTOMATION_CRON_SECRET=your-generated-secret
Then configure an external cron service (e.g. cron-job.org, Vercel Cron, or a server cron) to GET https://your-crm.example.com/api/automations/cron?secret=your-generated-secret every minute. Automations that use only instant triggers (new message, new contact, keyword) work without this.
Set NEXT_PUBLIC_SITE_URL to your canonical domain. This variable is used when generating invite links from background workers and cron jobs that have no incoming HTTP request to derive the origin from. Without it, invite links generated in those contexts fall back to a default and may point to the wrong URL. The format is https://your-crm.example.com — no trailing slash.

Build docs developers (and LLMs) love