Skip to main content
Lovable’s web agent does not read skill files from .agents/skills/ or .cursor/skills/ — it only reads Project knowledge, Workspace knowledge, AGENTS.md, and CLAUDE.md from your GitHub repo. The npx skills add CLI has no direct effect on what Lovable sees.However, Lovable projects are GitHub-backed. If you also work on the same project locally in Cursor (a common hybrid workflow), you should install the skills there too — see the Cursor guide.

How Lovable reads context

Lovable’s agent considers several context sources when generating code:
SourceHow to set itScope
Project knowledgeProject settings → KnowledgeOne project
Workspace knowledgeSettings → KnowledgeAll projects in workspace
AGENTS.md / CLAUDE.mdRoot of the GitHub repo linked to the projectAlways loaded regardless of session length
Integration knowledgeVia connected services (e.g. Supabase)Per integration
AGENTS.md and CLAUDE.md at the repo root are always read by Lovable, even in very long sessions where project or workspace knowledge may not always be followed consistently. Use them for rules that must never be lost.
For Notifyer integrations, the most reliable approach is to put the critical API context in Project knowledge and keep the AGENTS.md file for structural rules that must persist across long sessions.
Add the following to your project’s Project settings → Knowledge. This tells Lovable’s agent exactly how to call the Notifyer API when building your app.
Notifyer WhatsApp API integration

Base URL: stored in env var NOTIFYER_API_BASE_URL (e.g. https://api.insightssystem.com)
Auth token: stored in env var NOTIFYER_API_TOKEN (JWT from login)

Auth headers:
- Console API (templates, bots, broadcasts, webhooks):
    Authorization: Bearer <NOTIFYER_API_TOKEN>
    Origin: https://console.notifyer-systems.com
- Chat API (recipients, messaging, labels, handoff):
    Authorization: <NOTIFYER_API_TOKEN>  (no Bearer prefix)
    Origin: https://chat.notifyer-systems.com

Key API groups:
- /api:AFRA_QCy/ — templates
- /api:ox_LN9zX/ — bots
- /api:Mk_r6mq0/ — broadcasts
- /api:bVXsw_FD/ — chat recipients and messaging
- /api:qh9OQ3OW/ — message logs and analytics
- /api:0hqyGRIz/ — webhooks

Critical rules:
- Never hardcode NOTIFYER_API_TOKEN in source code — always use env vars.
- Text and attachment messages require the recipient to have messaged in the last 24 hours.
  If window is closed, use a template message instead.
- global_label is a string[] of label names, not IDs.
- PATCH /web/recipient/:id requires the full recipient body (fetch first, then patch).
- Schedule timestamp is ms since epoch; 0 means immediate send.
- NOTIFYER_API_BASE_URL must be HTTPS — reject any http:// value.

Reference:
- Full API documentation: https://github.com/Whatsable/whatsapp-business-agent-skills
- Script reference: skills/chat-notifyer/scripts/ and skills/automate-notifyer/scripts/
Project Knowledge supports up to 10,000 characters. The block above is intentionally concise. Expand it with specific endpoint shapes or payload examples if your project needs precise API call generation.

Option 2 — AGENTS.md in your GitHub repo

For rules that must survive long Lovable chat sessions, add an AGENTS.md file to the root of the GitHub repository linked to your Lovable project. Lovable always reads root-level AGENTS.md files regardless of session length. Create AGENTS.md in your repo root:
# Notifyer WhatsApp Integration Rules

## Authentication
- Console API: `Authorization: Bearer ${NOTIFYER_API_TOKEN}` + `Origin: https://console.notifyer-systems.com`
- Chat API: `Authorization: ${NOTIFYER_API_TOKEN}` (no Bearer) + `Origin: https://chat.notifyer-systems.com`
- Base URL from `NOTIFYER_API_BASE_URL` env var (always HTTPS)

## 24-hour messaging window
- Free-text and media can only be sent if the recipient messaged us within the last 24 hours
- If window is closed, use a template message
- Check window via GET /api:bVXsw_FD/web/recipient — look at expiration_timestamp

## Safe PATCH pattern
- Before PATCH /web/recipient/:id, always GET the full record first
- Include all existing fields in the PATCH body (name, phone_number, phone_number_string,
  global_label, is_ai_assistant, note) to prevent accidental data wipe

## Environment variables
- NOTIFYER_API_BASE_URL — required
- NOTIFYER_API_TOKEN — required, JWT from login
- Never commit tokens to Git

Example Lovable prompts

With the project knowledge or AGENTS.md in place, use Lovable’s Agent mode to build Notifyer-powered features:

Send a WhatsApp message from a form

Add a "Send WhatsApp" button to the CustomerDetail page.
When clicked, it should call a Supabase Edge Function that sends a WhatsApp text message
via the Notifyer Chat API to the customer's phone number.
Use NOTIFYER_API_BASE_URL and NOTIFYER_API_TOKEN from environment variables.
Only send if the 24-hour window is open; otherwise show an error: "Window closed — use a template."

Send a template when window is closed

In the CustomerDetail page, add a "Send Reminder" button.
The Edge Function should first check the recipient's expiration_timestamp.
If the 24h window is open, send a free-text message.
If closed, send the payment_reminder WhatsApp template instead.
Both paths use the Notifyer Chat API with the correct auth header (no Bearer prefix).

Broadcast from the dashboard

Add a "Send Broadcast" section to the Marketing page.
It should let the user pick an approved template from a dropdown (fetched from
GET /api:AFRA_QCy/templates_web on the Notifyer Console API with Bearer auth),
upload a CSV of phone numbers, and trigger a broadcast via the Notifyer API.

Webhook receiver

Create a Supabase Edge Function at /notifyer-webhook that receives POST requests
from Notifyer's IO webhook. Validate the HMAC-SHA256 signature using NOTIFYER_WEBHOOK_SECRET.
When a new inbound message event arrives, insert a row into the messages table
with { phone, body, direction: "inbound", received_at }.

Label and handoff from the app UI

In the ConversationView component, add two buttons:
1. "Assign to Human" — calls PATCH /api:bVXsw_FD/web/recipient/:id with is_ai_assistant: false
   using the Notifyer Chat API (Authorization: <token> without Bearer).
2. "Assign Label" — shows a dropdown of available labels and calls the same PATCH endpoint
   with the updated global_label array.
Both should fetch the full recipient record first before patching.

Using Plan mode before building

For complex integrations, click Plan next to the message input to switch to Plan mode before any code is written. Plan mode never modifies your code — it only reasons and proposes an approach.
I want to integrate Notifyer WhatsApp messaging into this app.
We need to: send template messages when a new order is created, receive inbound
messages via webhook and store them, and show chat history in the CustomerDetail page.
What's the best architecture using Supabase Edge Functions?
When you’re happy with the plan, approve it and Lovable automatically switches to Agent mode to implement each piece. The approved plan is saved to .lovable/plan.md in your project.

Environment variables by backend

Lovable supports two distinct backends. The env var workflow is different for each.
Lovable Cloud is Lovable’s own full-stack hosting platform — no external Supabase account needed. It handles the backend automatically.When Lovable generates an Edge Function that calls the Notifyer API, instruct it to read secrets from environment variables:
Store NOTIFYER_API_BASE_URL and NOTIFYER_API_TOKEN as secrets in
Lovable Cloud and read them inside the Edge Function with
Deno.env.get("NOTIFYER_API_TOKEN").
Lovable Cloud manages the secret injection automatically as part of the Cloud environment. You can review and manage Cloud settings via Connectors → App connectors → Lovable Cloud → Manage permissions.

Important constraints

These operations cannot be done via Lovable or any API — they require the Notifyer Console web UI:
  • Initial WhatsApp number connection (embedded signup / QR scan)
  • Billing and Stripe plan changes
  • Meta template approval (timing is controlled by Meta, not the API)