Naffes
العربيةStart free↗

Integration

n8n and Naffes CRM: deal events in workflows you control

Naffes CRM posts a deal.stage_changed event to your n8n instance whenever a deal changes stage, on a fixed path built from your base URL, with your API key in a request header.

Who this is for

Technical teams often pick n8n because it runs on their own servers or in n8n's cloud and lets them drop code into a workflow when needed. The Naffes integration gives them a clean trigger: every deal stage change lands in n8n, and from there it goes wherever your internal systems need it.

Examples: send deals that reach the contract stage to your ERP, log every stage move to a data warehouse for analysis, or open a request in an internal ticketing system when a deal enters delivery.

Setup in n8n, then in Naffes

  1. Add a Webhook node

    In a new n8n workflow, add a Webhook node with the POST method and change its random default path to deal.stage_changed.

  2. Publish the workflow

    n8n registers the production URL when the workflow is published and active. Naffes always calls the production URL, never the test URL, so an unpublished workflow receives nothing.

  3. Prepare an API key

    Create an API key in n8n's settings. Naffes needs it for Test connection and also sends it in the X-N8N-API-KEY header with every event.

  4. Enter the details in Naffes

    As an admin, open Marketplace > n8n > Configure n8n, enter your instance base URL, such as https://n8n.example.com, paste the key and click Save.

  5. Test, then send a real event

    Click Test connection; Naffes lists workflows through the n8n API to confirm the URL and key. Then move a test deal to another stage and watch the execution in n8n.

To keep stray requests out, set the Webhook node's authentication to Header Auth on X-N8N-API-KEY with the same value, ideally using a key created only for this purpose.

The URL and the payload

Naffes appends /webhook/deal.stage_changed to your base URL and posts JSON shaped like this:

{
  "event": "deal.stage_changed",
  "delivered_at": "2026-09-28T09:15:00.000Z",
  "data": {
    "deal_id": 418,
    "name": "Clinic group renewal",
    "amount": 48000,
    "pipeline": "Enterprise",
    "previous_stage": "Proposal",
    "stage": "Negotiation",
    "updated_at": "2026-09-28T09:14:58.000Z"
  }
}

Stages and the pipeline arrive as display names, possibly in Arabic, not as internal IDs, so write your IF or Switch conditions against the names as they appeared in the first execution. Data flows one way; to write back, use an HTTP Request node with the REST API and a Bearer token.

Limits worth knowing

  • The base URL must be public. Naffes refuses to post to private or internal network addresses, so an instance inside your LAN needs an internet-facing address.
  • The Marketplace card always says not connected. This is a known bug in how the card reads its status; rely on Test connection and n8n's execution log.
  • One event, unsigned, no retries. If the instance is down at the moment of the move, the event is lost.
  • The key goes out with every request. Because the API key rides in a header, use a dedicated key with the narrowest permissions your n8n setup allows.

For all nine contact, company and deal events with HMAC signatures and up to 7 delivery attempts, register an outgoing webhook in Settings that points to another n8n Webhook node, and verify the signature in a Code node. They require the Pro plan.

Questions

Questions 4

Why does the n8n card say not connected when events arrive?

A known bug in how the card reads its status makes it always show not connected. Events are sent as long as the base URL is saved; n8n's execution log is the source of truth.

Our n8n runs on an internal network. Will it work?

Not unless it is published at a public address. Naffes protects its servers by refusing to post to private and internal addresses.

Will events reach the n8n test URL?

No. Naffes always posts to the production /webhook/ path, so publish and activate the workflow before testing.

Does it work with n8n Cloud?

Yes. Any public base URL works, cloud or self-hosted.

Sources

  1. n8n Docs: Webhook nodeAccessed

See plans and pricing