Quick overview
I built this to score every Meta Lead Ads submission the minute it lands. OpenAI reads the answers and gives a fit score. HubSpot keeps the contact with that verdict. Slack tells your team which ones to call first. The WhatsApp reply ships switched off until you turn it on.
How it works
- A new Meta Lead Ads submission fires the trigger, so nobody has to export a CSV from Ads Manager to see who came in.
- A Code node flattens the form answers into a name, an email and a phone in E.164 format, whatever fields your form happens to have.
- OpenAI reads your business description next to the answers. It returns intent, urgency, a fit score out of 100 and a suggested first reply. If the call fails the lead is marked UNSCORED instead of dropped.
- Your thresholds in Lead Settings turn that score into HOT, WARM or COLD, and you can move the line whenever your calendar fills up.
- The contact is upserted in HubSpot with the score, the summary and the verdict on custom properties.
- A HOT lead with a usable phone number gets the approved WhatsApp template, but only when sendWhatsAppAutomatically is true. It ships false, so nothing reaches a stranger until you decide it should.
- Slack gets the alert with the summary and the HubSpot link. Google Sheets gets the row, and a failed write is announced in Slack rather than swallowed.
Setup
- Connect the Meta Lead Ads trigger to your Meta account, then pick the page and the form you want to watch from the dropdowns.
- Add an OpenAI credential on the chat model node, the only model node in the workflow, and leave the rest of it alone.
- Add your HubSpot app token. Create three contact properties: lead_fit_score, lead_summary and lead_verdict.
- Add Slack, set the target channel in Lead Settings, and check the bot is actually a member of that channel before the first run.
- Add Google Sheets. Make a Leads tab whose headers match the mapped columns, then put the sheet ID and tab name in Lead Settings.
- WhatsApp is optional. Add the Business Cloud credential, your phone number ID and the approved template in Lead Settings. I would flip sendWhatsAppAutomatically to true only once you have read a few suggested replies in Slack and trust what the model writes.
Requirements
- You need a Meta app with lead retrieval access, an OpenAI API key, a HubSpot account, a Slack bot in the target channel and a Google Sheet. I made WhatsApp Business Cloud optional, so add it only if you want the automatic reply to hot leads switched on.
Customization
- I left the hot line in Lead Settings so you can move it whenever the calendar fills up. Swap the WhatsApp node for SMS or email if your buyers do not use it, or replace the sheet with an n8n Data Table if you would rather keep the log inside n8n.
Additional info
This is the same workflow I sell as a Fractional HQ kit on Etsy, with a setup guide and a README in the download, which is where the purchase link takes you.