Naffes
العربيةStart free↗

Integrations

Create an outgoing webhook for contact, company or deal events

An outgoing webhook in Naffes CRM POSTs to your system whenever a contact, company or deal is created, updated or deleted. Every delivery is signed, retried on failure and recorded, which makes it the dependable way to keep an accounting system or data warehouse in step without polling.

Steps

  1. Open Webhooks

    As a workspace admin, go to Settings → Integrations → Apps & APIs → Webhooks.

  2. Create a new webhook

    Click New webhook, enter a Name, then the Endpoint URL: a public https address on your side. Private and internal addresses are rejected.

  3. Type the event name

    In Event, type one event name exactly, such as deal.created or contact.updated. The field is free text, so a typo means nothing will ever match.

  4. Create and monitor

    Click Create. The webhook card shows Success rate, Last delivery and the last 4 characters of the Secret, and offers Pause, Resume and Delete.

Note

A webhook created on screen subscribes to one event. To receive several, create one webhook per event; they can all point at the same URL.

Available events

RecordCreatedUpdatedDeleted
Contactcontact.createdcontact.updatedcontact.deleted
Companycompany.createdcompany.updatedcompany.deleted
Dealdeal.createddeal.updateddeal.deleted

Each payload carries the record's attributes, and updates include the changed fields. A deal stage change arrives as deal.updated, and there are no events for tasks, meetings, notes, tickets, invoices or messages. Bulk imports do not fire events.

What your endpoint receives, and how to handle it

  • Headers: X-Naffes-Signature in the form t=timestamp,v1=signature (HMAC-SHA256), X-Naffes-Event, X-Naffes-Delivery-Id and X-Naffes-Webhook-Id.
  • Retries: up to 7 attempts in total, after 30 seconds, 2 minutes, 10 minutes, 1 hour, 6 hours and 24 hours. Answer with a 2xx quickly and do the heavy work afterwards.
  • Possible duplicates: because of retries, the same delivery can arrive more than once, so use X-Naffes-Delivery-Id to drop repeats.
  • Verifying signatures: the screen shows only the secret's last 4 characters, and the full secret appears only in the API response at creation. Verifying signatures therefore currently means creating the webhook through the REST API.

Troubleshooting

  • Deliveries suddenly stopped: a subscription pauses itself when at least half of its recent deliveries are dead (of the last 100, minimum 10). Fix the endpoint, then click Resume.
  • The 24h deliveries number looks high: the card currently shows all deliveries since creation, not just the last 24 hours.
  • No delivery log on screen: the per-attempt log, test deliveries and secret rotation are API-only for now.
  • You need a stage-change event in Make or n8n specifically: the Marketplace connectors send deal.stage_changed to Make or n8n, but unsigned and without retries.