# Mirror new SourceWhale contacts into HubSpot, enriched

> Every contact your team adds in SourceWhale gets enriched with their current role and company, then created or updated in HubSpot without duplicates.

- Workflow type: agent
- Services: SourceWhale, Apollo, HubSpot, Slack
- Categories: Sales, Operations
- Published: 2026-08-09

## What it does

- Picks up every new contact the moment outreach adds them in SourceWhale, so the CRM never falls behind the campaigns.
- Fills in current employer, job title, seniority and location automatically before anything reaches HubSpot.
- Looks the person up in HubSpot first, so an existing contact gets updated rather than duplicated.
- Stamps each record with the outreach campaign that sourced them, and posts a short heads-up in Slack when someone director level or above comes through.

## What you'll need

- A SourceWhale account with admin access, so new contacts can be handed over automatically
- An Apollo account with enrichment credits available
- A HubSpot account where you can create and edit contacts
- A spare contact property in HubSpot to hold the campaign name (a simple text field)
- A Slack workspace and a channel for the senior-contact heads-ups

## Prompt

When a new contact is added in SourceWhale, enrich that person and mirror them into HubSpot so the CRM never drifts from what outreach is actually doing. Trigger this on a webhook from SourceWhale's contact-added subscription so it runs once per new contact.

Take the contact from the webhook payload: email address, first and last name, and the SourceWhale campaign that added them. Run Apollo People Enrichment once on that email plus name to fill in current employer, job title, seniority and location. Apollo People Enrichment consumes credits, so enrich exactly once per new contact and never re-run it inside a retry loop.

Before writing anything to the CRM, check HubSpot with Search Contacts on the email address. This dedupe check always runs before any create. If there is no match, create the record with Create Contact. If there is a match, update that existing contact with Update Contact instead of creating a duplicate.

Write the SourceWhale campaign name into a HubSpot contact property, for example a single-line text property called SourceWhale campaign, so we can always tell which outreach sequence sourced the person. Set the contact lifecycle stage from what enrichment returns, and populate current employer, job title, seniority and location from the Apollo result.

If the enriched title is director level or above (director, head of, VP, C-level, founder or owner), also post a short heads-up with Slack Send a Message to our outreach channel. Keep it to a couple of lines naming the person, their title, their company and the campaign that pulled them in.

If Apollo returns no confident match, still write the HubSpot record from the raw SourceWhale fields and mark it as unenriched, rather than dropping the person. Leave the enrichment fields blank, set a clear unenriched flag, and still stamp the campaign name so the record can be reviewed later. Never skip HubSpot just because enrichment came back empty.

## How to customize

- Move the bar for the Slack heads-up: director and above by default, or tighten it to VP and above.
- Choose which Slack channel gets the alert, or send it as a direct message to the account lead instead.
- Decide which lifecycle stage new contacts land on, and rename the property that stores the campaign name.

## FAQ

### Will this create duplicate contacts in HubSpot?

No. Every new person is looked up in HubSpot by email address before anything is written. If they already exist, their record is updated in place, and only genuinely new people get created.

### What happens if nothing can be found about the person?

They are still added to HubSpot using the details that came from SourceWhale, and marked as unenriched so you can spot them and follow up manually. Nobody gets dropped.

### Does this work on HubSpot's free CRM?

Yes. It only needs the ability to create contacts, update them, and add one custom contact property for the campaign name, all of which the free CRM supports.

### How much enrichment does this use up?

One lookup per new contact, run a single time. The workflow never re-runs enrichment on the same person, so your credits track the number of new contacts and nothing more.

### Can we switch off the Slack alerts?

Yes. You can drop the notification step entirely and keep the CRM sync, or raise the seniority threshold so only the most senior contacts trigger a message.

Use this prompt in General Input: https://www.generalinput.com/prompts/mirror-new-sourcewhale-contacts-into-hubspot-enriched