Webhook data corruption issue - only receiving partial email and empty fields from Airtable to n8n

Problem Description

I have an Airtable script that runs when new records get added to my “Registrations” table. The script is supposed to send user data (full name, email address, and company info) to my n8n webhook endpoint. After that, n8n should trigger a welcome email through Brevo.

Current Script Code

let hookEndpoint = "https://myapp.n8n.cloud/webhook/registration";

// Retrieve configuration
let inputConfig = input.config();
let currentRecordId = inputConfig.recordId;

// Access table and record data
let registrationTable = base.getTable("Registrations");
let currentRecord = await registrationTable.selectRecordAsync(currentRecordId);

if (currentRecord) {
  let fullName = currentRecord.getCellValue("Full Name");
  let emailAddress = currentRecord.getCellValue("Email Address");
  let companyName = currentRecord.getCellValue("Company");

  if (!emailAddress || !emailAddress.includes("@")) {
    output.set("error", "Email validation failed");
  } else {
    let dataPacket = { FullName: fullName, EmailAddress: emailAddress, Company: companyName };
    await fetch(hookEndpoint, {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(dataPacket),
    });
    output.set("dataPacket", dataPacket);
  }
} else {
  output.set("error", "Could not find record with ID: " + currentRecordId);
}

What’s Going Wrong

The email field only shows up as a single character in n8n (like “j” instead of “[email protected]”). The name and company fields come through as null values every time, even though I can see the correct data in Airtable.

What I’ve Already Checked

  • The record ID variable is working fine
  • Field names are spelled exactly right
  • Test runs in Airtable show all the correct data
  • The payload looks perfect when I check it in Airtable logs

Has anyone run into this weird data truncation problem before? Could this be some kind of encoding issue between Airtable and n8n? Any ideas for fixing this would be awesome!

sounds like a webhook timing issue. i’ve hit similar problems where airtable sends data before the record’s fully committed. try adding a small delay before your fetch call - setTimeout() with 500ms usually works. also double-check your n8n execution logs to make sure the webhook’s getting the full payload.

I’ve seen this exact issue before - it’s definitely a character encoding problem. That single character email happens when there’s an encoding mismatch during JSON stringify. Your Airtable data probably has hidden characters or weird encoding that breaks during transmission. Try wrapping your field values in String() before adding them to the dataPacket - like String(fullName || '') to force proper string conversion. Also double-check that your n8n webhook endpoint has the right Content-Type parsing set up. N8n can be finicky with certain character encodings out of the box. Those null values for name and company are likely from the same encoding issue messing up your entire payload.

I’ve hit this exact issue before - it’s usually a field type mismatch. That partial email character screams linked records or formula fields getting mangled during the read. Switch to getCellValueAsString() instead of getCellValue() for everything, especially computed or linked fields. Also double-check that your Airtable fields are actually single-line text, not email fields - those can mess up serialization. And throw some console logs on your n8n webhook to see what JSON is actually hitting it.