Hey everyone, wondering if anyone has run into this.
We upload campaign CSVs to Smartlead with custom columns (position, location, company city/region/country, LinkedIn URL, company size, etc). When a lead replies and Smartlead fires the reply webhook, we expect these custom columns to come through in the payload under lead_data.custom_fields.
However we’re finding that custom_fields is either empty or missing entirely in the webhook payload, even though the campaign CSV definitely had those columns populated.
We’re using n8n to receive the webhook and sync data to HubSpot. This used to work fine on Make.com with the same CSV.
Questions:
Does Smartlead’s reply webhook actually include custom CSV fields?
If so, how do we incorporate that into n8n? Because currently, I cannot see those custom csv fields popping up.
Hi @Saad_Mir
if they are missing in n8n, it’s because you likely clicked the “Send Test” button inside Smartlead. which fires a generic, hardcoded payload that isn’t tied to an actual campaign, so its custom_fields object is empty. since n8n builds its visual interface only based on the data structure of the last payload it received, it hides the fields.
try setting the webhook node to Listen for Test Event.
go to a live smartlead campaign (or a test campaign you loaded yourself into with custom columns).
trigger a real event by physically replying to one of the emails yourself.
go back to n8n and look at the new execution data. the payload should now be fully populated, and you’ll see your company city, LinkedIn URL, etc., nested right inside $json.body.lead_data.custom_fields.
yeah this is almost certainly the test payload issue, Smartlead’s “Send Test” button sends a dummy payload without any actual campaign data attached so custom_fields comes through empty. You need to trigger a real reply event from an actual lead in a campaign that has those CSV columns, or at minimum use Listen for Test Event mode on the webhook node and then manually fire a real webhook from a test campaign you’ve loaded yourself into. Once n8n sees the full payload structure with your custom fields populated it’ll show them in the UI.
@Saad_Mir webhook payload inconsistencies can be really tricky to debug, especially when it worked fine in another platform. Since this worked in Make.com but not n8n:
It’s not an n8n issue, n8n’s Webhook node receives whatever payload is sent. The difference is likely:
Make.com might have had additional processing/mapping you forgot about
Different webhook URL or configuration in Smartlead
Timing issue, smartlead changed their webhook payload structure between migrations.
Would you be able to share a sample of the webhook payload you’re receiving (with sensitive data removed)?