NueForm

Data Nodes

Make HTTP API calls during the form flow to fetch data, validate answers, or trigger external actions.

Data Nodes let your forms make HTTP API calls during the form flow. They are invisible to respondents — they execute automatically and can fetch data from external APIs, validate answers against your backend, or trigger actions.

Data Nodes require the Pro plan. Requests run on our servers, not in the respondent's browser — so your API credentials stay private and there are no CORS restrictions. Data Nodes don't count as a visible question in the form.

Adding a Data Node

  1. Open your form in the builder.
  2. Click + to add a new question.
  3. Select Data Node from the Advanced category.
  4. Configure the HTTP request in the question properties.

Configuration

HTTP Method

Choose from GET, POST, PUT, or DELETE depending on your API endpoint.

URL

The endpoint URL to call. Supports variable interpolation — use {variableName} to insert form variable values.

Example: https://api.example.com/users/{email}

If the respondent entered jane@example.com in an earlier email question stored as the email variable, the actual request goes to https://api.example.com/users/jane@example.com.

Headers

Request headers as key/value rows. Both form variables ({variable}) and connection secrets ({secret.NAME}) are supported.

Example:

json
{
  "Authorization": "Bearer {secret.API_TOKEN}",
  "Content-Type": "application/json"
}

Request Body

For POST and PUT requests, provide a JSON body template. Because the body is JSON, variables and secrets use double braces so they don't collide with JSON's own { }{{variable}} and {{secret.NAME}}.

Example:

json
{
  "name": "{{full_name}}",
  "email": "{{email}}",
  "api_key": "{{secret.API_KEY}}",
  "source": "nueform"
}

Data Node Secrets

Never paste an API key directly into a URL, header, or body — store credentials as data node secrets and reference them by name instead.

  1. In the data node editor (or Form Settings), click Manage secrets.
  2. Click Add secret, give it a name (letters, numbers, underscores), and paste the value.
  3. Reference it in a Data Node as {secret.NAME} in the URL or headers, or {{secret.NAME}} in the JSON body.

Secrets are:

  • Encrypted at rest and resolved only on our servers when the request runs — they are never sent to the respondent's browser.
  • Write-only — once saved, a secret's value is never shown again. You can replace the value or delete it, but you can't view it.
  • Per-form — they travel with the form when you duplicate it, but are stripped when you publish or use a template, or export the form (the new owner adds their own).

Anyone who can edit the form can reference its secrets in a request, so only grant form-edit access to people you trust with those credentials.

Response Handling

Storing the Response

Set the Response Variable field to save the full JSON response as a form variable. You can then reference this data in later questions using {variableName} syntax.

Example: If you set the response variable to user_data and the API returns {"name": "Jane", "plan": "pro"}, you can reference {user_data} in subsequent questions.

Display Options

Loading Text

Customize the loading message shown while the request is in progress. Default: "Loading..."

Silent Mode

Enable Silent mode to make the request in the background with no loading indicator. The form continues without waiting. Useful for fire-and-forget scenarios like analytics pings or webhook triggers.

Debug Mode

Enable Debug mode to show a panel with the full request and response details. Useful during form development — disable before publishing.

Validation Gate

Enable Validation gate to use the Data Node as a validator for the previous question. If the API request fails (non-2xx response), the respondent is blocked from proceeding and shown an error.

Use case: Validate a coupon code, check email availability, or verify an access code against your backend.

Timeout

Configure the request timeout in seconds (default: 10 seconds). If the request takes longer, it fails and the form shows an error (unless in silent mode).

Examples

Example 1: Validate a Coupon Code

  1. Add a Short Text question asking for a coupon code (store answer as coupon variable).
  2. Add a Data Node after it with:
    • Method: GET
    • URL: https://api.yoursite.com/coupons/{coupon}
    • Validation gate: enabled
    • Response variable: coupon_data
  3. If the coupon is invalid, the API returns a 404 and the respondent sees an error.
  4. If valid, the discount info is stored in {coupon_data} for use later.

Example 2: Enrich User Data

  1. Add an Email question (store answer as email variable).
  2. Add a Data Node:
    • Method: GET
    • URL: https://api.yoursite.com/users/{email}
    • Silent mode: enabled
    • Response variable: user_info
  3. Later questions can reference {user_info} to pre-fill fields or personalize the experience.

Example 3: Submit to CRM

  1. At the end of the form, add a Data Node:
    • Method: POST
    • URL: https://api.yourcrm.com/leads
    • Body: {"name": "{{name}}", "email": "{{email}}", "phone": "{{phone}}"}
    • Silent mode: enabled
  2. The lead is created in your CRM as part of the form flow — no webhook delay.
  • Variables — How variable substitution works
  • Logic Jumps — Conditional branching based on answers
  • Webhooks — Alternative for post-submission integrations
Last updated: July 9, 2026