NexusKit

Docs

Contact Module

Capture leads from any website form via API. Submissions land in your dashboard with email notifications — no backend required.

Overview

The Contact module gives you a complete lead-capture system via REST APIs. Create forms with custom fields in the dashboard, then POST submissions from any React, Vue, Next.js, or plain HTML site. Each submission is stored in your dashboard inbox with email notifications, optional auto-replies, Turnstile bot protection, and honeypot filtering. Export submissions as CSV at any time.

Quick Start

1. Create a form in the dashboard

Define your fields (name, email, message, etc.) and copy your API key and form ID.

2. POST submissions from your site

Send a JSON payload to the public submission endpoint with your Bearer key.

3. View submissions in your dashboard

Leads appear instantly. Filter by status, add notes, or export as CSV.

API Endpoints

MethodEndpointAuthDescription
GET/v1/contact/formsBearerList all forms for your tenant
POST/v1/contact/formsBearerCreate a new contact form
GET/v1/contact/forms/:idBearerGet a single form with field definitions
PATCH/v1/contact/forms/:idBearerUpdate form fields or settings
GET/v1/contact/forms/:id/submissionsBearerList submissions for a form
GET/v1/contact/submissions/:idBearerGet a single submission
PATCH/v1/contact/submissions/:idBearerUpdate submission status or notes
POST/v1/public/contact/forms/:id/submissionsAPI KeyPublic endpoint — submit a form from your site

Create a Form

Create a form with custom fields via the dashboard or API. Each field has a name, type, and optional label.

POST /v1/contact/forms
Authorization: Bearer nk_live_...

{
  "name": "Website Contact",
  "fields": [
    { "name": "name", "type": "text", "label": "Full Name" },
    { "name": "email", "type": "email", "label": "Email Address" },
    { "name": "message", "type": "textarea", "label": "How can we help?" }
  ]
}

Submit from Your Site

POST form data from any frontend. The public endpoint requires only a Bearer API key — no session or login needed.

const res = await fetch(
  'https://api.nexus-kit.com/v1/public/contact/forms/abc123/submissions',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer nk_live_...'
    },
    body: JSON.stringify({
      locale: 'en',
      turnstileToken: '...',
      payload: {
        name: 'Jane Doe',
        email: '[email protected]',
        message: 'Interested in your services'
      }
    })
  }
);

const data = await res.json();
// { "id": "...", "status": "new" }

Email Notifications

Configure one or more notification email addresses per form in the dashboard. When a new submission arrives, all configured addresses receive an alert with the submission details. You can also enable auto-reply to send a confirmation email to the submitter automatically.

Turnstile Captcha

Optional Cloudflare Turnstile integration blocks bots without annoying CAPTCHAs. Enable it per form in the dashboard.

<!-- Include Turnstile on your page -->
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

<form id="contact-form">
  <div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
  <button type="submit">Send</button>
</form>

<script>
document.getElementById('contact-form').addEventListener('submit', async (e) => {
  e.preventDefault();
  const token = document.querySelector('.cf-turnstile-response').value;

  await fetch('/v1/public/contact/forms/{formId}/submissions', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer nk_live_...'
    },
    body: JSON.stringify({
      locale: 'en',
      turnstileToken: token,
      payload: { name: '...', email: '...', message: '...' }
    })
  });
});
</script>

Honeypot Protection

A hidden "website" field is included in forms with honeypot protection enabled. Real users never see it, but bots that fill it out are silently discarded. Enable honeypot per form in the dashboard — zero friction for real visitors.

CSV Export

Download all submissions as a CSV file from the dashboard or via the API. Filter by status (new, read, archived) before exporting. The export includes all field values, timestamps, and source IP (truncated).

Rate Limits

API Rate Limit

120 RPM

Per IP address

Monthly Submissions

5,000

Per tenant

Email Notifications

5,000/mo

Alerts + auto-reply combined

FAQ

How do I connect a React contact form to NexusKit?

Create a form in the dashboard, copy your API key and form ID into .env, then POST to /v1/public/contact/forms/:id/submissions with the Bearer key and Turnstile token. See our step-by-step React guide for the full walkthrough.

Is NexusKit Contact free?

Yes. Core services are free for life within fair-use rate and volume limits — 5,000 submissions per month, 120 requests per minute.

Where is form data stored?

On ZAHA GLOBAL infrastructure (vioflare_server). Tenants share one database with row-level tenant_id isolation. Source IPs are truncated before storage for privacy.

Can I use it with WordPress or other CMS?

Yes. NexusKit Contact works via REST APIs, so you can integrate with any CMS or framework that supports HTTP requests.

Ready to capture leads?

Start free. No credit card. Ship a working contact form in minutes.