Auto-enroll HubSpot MQLs in a Salesforge sequence

The moment a HubSpot contact becomes a Marketing Qualified Lead, drop them into a Salesforge outreach sequence and log the handoff to Google Sheets.

Deterministic Code
HubSpotSalesforgeGoogle SheetsSalesMarketingData SyncLead EnrichmentEmail Automation
PromptCreate

Build a deterministic code workflow that hands off HubSpot Marketing Qualified Leads to Salesforge automatically, with a Google Sheets audit trail. Every step is a fixed CRUD call, no reasoning needed.

Trigger: a HubSpot webhook fired when a contact's lifecyclestage property changes. The workflow should be configurable so I can point it at any target stage (default: marketingqualifiedlead) and let me change it without editing code.

Step 1. Receive the HubSpot webhook payload. Extract the contact ID and the new lifecyclestage value. If the new value does not match the configured target stage, exit cleanly (no logging needed).

Step 2. Call HubSpot Get Contact using the contact ID. Request the properties email, firstname, lastname, company, and phone. If the contact is archived or not found, exit.

Step 3. Guard: if the returned email is empty or missing, skip Salesforge enrollment. Jump straight to the audit log step below and record the skip reason ("missing email") so nothing disappears silently.

Step 4. Call Salesforge Import Lead into Sequence against a pre-selected sequence ID (make this a per-run configurable input, not hard-coded). Pass the email, firstName, lastName, company, and phone from step 2. This single call both creates the contact in Salesforge and enrolls them in the sequence, so no separate create-then-enroll is needed.

Step 5. Call Google Sheets Append Values against a configured spreadsheet ID and an audit tab (default tab name: MQL Handoff Log). Append one row with these columns in order: timestamp (ISO 8601, UTC), HubSpot contact ID, email, first name, last name, company, Salesforge sequence name, status (enrolled or skipped), and skip reason (blank when status is enrolled). Use USER_ENTERED value input option so the timestamp renders as a real date.

Configurable inputs surfaced in the run dialog: the target HubSpot lifecycle stage, the Salesforge sequence ID (and the human-readable sequence name to write to the sheet), the Google Sheets spreadsheet ID, and the audit tab name.

Error handling: if Salesforge returns a 429, back off and retry once. If it returns any other 4xx, still write an audit row with status=failed and the error message. Do not throw on Sheets append failures; log to the run trace so a temporary Sheets outage does not break the sales handoff.

Non-goals: do not create a HubSpot workflow, do not update the HubSpot contact after enrollment, and do not send Slack notifications. Keep the flow to the four steps above.

What does this prompt do?

  • Watches HubSpot for contacts that move into your Marketing Qualified Lead stage, or any other lifecycle stage you pick.
  • Pulls the contact's name, company, email, and phone from HubSpot so sales gets a real record, not a stub.
  • Adds the lead to a Salesforge sequence you choose, so outreach starts the same day marketing hands them over.
  • Appends a row to a Google Sheet every time, with the email, HubSpot record, sequence name, and timestamp, so you have a clean audit trail.

What do I need to use this?

  • A HubSpot account where you can install an app and receive contact property change webhooks.
  • A Salesforge workspace with the outreach sequence you want new MQLs to land in.
  • A Google Sheets file with an audit tab ready to accept new rows.
  • A shared idea of which HubSpot lifecycle stage counts as a Marketing Qualified Lead in your team.

How can I customize it?

  • Change which HubSpot lifecycle stage triggers the handoff. Sales Qualified Lead, Opportunity, or a custom stage all work.
  • Swap the Salesforge sequence per campaign, or route different lead sources to different sequences.
  • Pick the columns you want in the audit sheet, for example add lead source, owner, or original form.

FAQs

What if a HubSpot contact doesn't have an email address yet?
The workflow skips the Salesforge enrollment step, since Salesforge needs an email to start outreach. It still logs the skip to your Google Sheet with the reason, so nothing disappears silently.
Can I use a lifecycle stage other than Marketing Qualified Lead?
Yes. The workflow watches whichever HubSpot lifecycle stage you name. Sales Qualified Lead, Opportunity, or any custom stage in your account will work the same way.
Will this create duplicate contacts in Salesforge?
Salesforge treats the same email as the same contact, so re-triggering the workflow for the same lead won't create a duplicate. It will still log the event to your sheet so you can see the retry.
Does this replace HubSpot workflows?
No, it works alongside them. HubSpot workflows still handle internal notifications and property updates. This one takes over the specific job of pushing leads into Salesforge and keeping a record outside HubSpot.
Can I route to different Salesforge sequences based on the lead?
Yes. You can add simple rules, for example lead source, country, or persona, and pick a sequence per rule. Tell the workflow author what your split looks like and it will build the branch.

Related templates

Call overdue Xero customers with an AI collections agent

Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Let support send one-off Loops emails without an engineer

Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.

Loops.so
Stripe
Google Sheets
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Stop cold emails to anyone with a live deal in Pipedrive

Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App

Stop retyping marketing leads into your outreach tool.

Connect HubSpot, Salesforge, and Google Sheets once, and every new MQL lands in the right sequence the same minute marketing hands them off.