Route new HubSpot contacts into the right MailForge nurture list
The moment a new contact lands in HubSpot, we sort them into the right MailForge list, tag them, and ping sales in Slack if they look hot.
Build me an agent workflow that routes brand-new HubSpot contacts into the right MailForge nurture list, and pings sales in Slack when the contact looks like an enterprise fit.
Trigger: a HubSpot webhook subscribed to the contact.creation event. When the webhook fires, take the contact id from the event and call HubSpot Get Contact to load these properties: email, firstname, lastname, company, lifecyclestage, industry, numemployees, hs_lead_status, hubspotscore, and hs_analytics_source.
Then run these steps in order:
1. Skip if suppressed. Call MailForge List Suppressions and check whether the contact's email appears in the results. If it does, stop immediately with a "skipped: suppressed" outcome. Do not upsert, do not add to a list, do not post to Slack. This step is critical so we never re-nurture someone who has opted out.
2. Upsert into MailForge. Call MailForge Create or Update Contact keyed on the contact's email address. Carry over firstname and lastname, and set two tags on the contact: an industry tag of the form industry:<value> (lower-cased, or industry:unknown if the HubSpot property is blank) and a source tag of the form source:<value> based on hs_analytics_source (lower-cased, or source:unknown if blank). This gives marketing a way to segment inside MailForge later without a second sync.
3. Pick a nurture list. Reason about which MailForge nurture list the contact belongs on using these default rules, and treat the list names as workflow inputs so they can be renamed later:
- If numemployees is 1000 or more, OR lifecyclestage is salesqualifiedlead, OR hubspotscore is 80 or higher, choose the Enterprise list.
- Else if lifecyclestage is lead or marketingqualifiedlead and the contact has a company set, choose the SMB Trial list.
- Else if lifecyclestage is subscriber or customer, choose the Newsletter Only list.
- Otherwise, fall back to Newsletter Only.
Then call MailForge Add Contact to List passing the contact email and the chosen list name.
4. Alert sales if hot. If the contact matched the Enterprise rule, post a message to Slack using the Slack Bot Send a Message operation (prefer the bot integration over the user integration for automated alerts). The target channel is a workflow input, defaulting to #sales-alerts. The message body should be about four short lines: the contact's full name, their company and industry on one line, their HubSpot score if present, and a permalink to the HubSpot contact of the form https://app.hubspot.com/contacts/<portalId>/contact/<contactId>. The HubSpot portal id is a workflow input.
At the end of every run, log a short summary: the contact email, whether they were suppressed, which MailForge list they landed on, and whether a Slack alert fired.
Workflow inputs the user should be able to edit without touching the prompt text: the Slack alert channel (default #sales-alerts), the HubSpot portal id used for permalinks, the four MailForge list names (Enterprise, SMB Trial, Newsletter Only, fallback), and the HubSpot score threshold that counts as hot (default 80).
Additional information
What does this prompt do?
- The moment a new contact is created in HubSpot, we look them up and sort them into the right MailForge nurture list.
- We check MailForge's suppression list first, so opted-out people never get re-added to a nurture flow.
- Every contact is upserted into MailForge with tags that carry over their HubSpot industry and lead source.
- When a contact looks like an enterprise fit, we post a short alert into your sales Slack channel with their name, company, and a link back to HubSpot.
What do I need to use this?
- A HubSpot account you can install a webhook on for new contact events (Sales or Operations Hub tiers that support workflow webhooks).
- A MailForge account with your nurture lists already set up (for example Enterprise, SMB Trial, and Newsletter Only).
- A Slack workspace and a channel where sales should get hot-lead alerts.
How can I customize it?
- Change the rules that decide who counts as a hot enterprise lead, for example the employee count, HubSpot score, or which lifecycle stages qualify.
- Swap which nurture list each rule sends people to, or add new segments like a trial or partner list.
- Pick a different Slack channel for the sales alert, or turn the alert off entirely if you only want the list routing.
Frequently asked questions
Does this work on HubSpot Free?
What happens if someone has already unsubscribed?
Can I change the rules for which contact is enterprise versus SMB?
Will Slack get pinged for every single new contact?
What tags end up on the contact in MailForge?
Related templates
Stop hand-sorting new HubSpot contacts into email lists.
Connect HubSpot, MailForge, and Slack once, and Geni routes every new contact the moment they are created.