This workflow triggers when a Salesforce Campaign is moved to a “Ready to Send” status. It runs a Lusha verification pass on every campaign member, flags contacts that should be suppressed, updates stale data, and only allows the campaign to proceed once the list is clean.
1
Trigger — Campaign status changed to Ready to Send
A Record-Triggered Flow fires when a Campaign record’s status is updated to “Ready to Send.” The Flow immediately queries all Campaign Members associated with the campaign and begins the verification pass before any emails are sent.
2
Action — Verify every campaign member via Lusha
For each campaign member, the Flow calls Lusha’s /v2/contacts/search endpoint with the contact’s email address. Lusha returns their current verified status — confirmed in seat, departed, or not found — along with their current title and verified email address.
3
Action — Flag contacts for suppression
Contacts that Lusha identifies as departed are flagged for suppression — their Campaign Member status is updated to “Suppressed” and they are excluded from the send. Contacts where the email address has changed are updated with the current verified email before the campaign sends.
4
Action — Update stale contact data
For contacts confirmed in seat, the Flow updates any stale fields — title changes, direct dial updates, seniority changes — so the contact record reflects current reality before the campaign sends. Personalization tokens in the campaign email pull from updated fields.
5
Action — Write verification summary to campaign record
The Flow writes a verification summary to the Campaign record — total contacts verified, contacts suppressed, emails updated, and contacts confirmed. The campaign manager sees the full picture before approving the send.
6
Output — Verified campaign list ready to send
The campaign sends only to verified contacts with current email addresses. Departed contacts are suppressed. Stale titles are updated. The domain stays clean and every message reaches someone who can act on it.
What you’ll get back
A campaign verification summary on the Campaign record before the send:
Before Lusha verification
| Salesforce field | Value |
|---|
| Campaign name | Q3 Outbound — Series B Companies |
| Original list size | 284 contacts |
| Lusha — Contacts verified | 284 |
| Lusha — Confirmed in seat | 251 |
| Lusha — Suppressed (departed) | 18 |
| Lusha — Email updated | 9 |
| Lusha — Title updated | 24 |
| Lusha — Not found in database | 6 |
| Net sendable list | 257 verified contacts |
| Lusha — Verification date | [date] ✓ |
| Lusha — Verification status | ✓ Complete — ready to send |
Suppressed contacts — flagged for rep review
| Contact | Previous company | Status | Action |
|---|
| R.M. | [Company A] | Departed | Suppressed — find replacement contact |
| J.K. | [Company B] | Departed | Suppressed — find replacement contact |
| S.L. | [Company C] | Departed | Suppressed — find replacement contact |
Build it
Step 1 — Add verification fields to the Campaign object
In Salesforce Setup, go to Object Manager → Campaign → Fields & Relationships. Add the following custom fields:
| Field label | Field type | API name |
|---|
| Lusha — Contacts verified | Number | Lusha_Contacts_Verified__c |
| Lusha — Confirmed in seat | Number | Lusha_Confirmed__c |
| Lusha — Suppressed | Number | Lusha_Suppressed__c |
| Lusha — Emails updated | Number | Lusha_Emails_Updated__c |
| Lusha — Titles updated | Number | Lusha_Titles_Updated__c |
| Lusha — Verification date | Date/Time | Lusha_Verification_Date__c |
| Lusha — Verification status | Picklist (Pending / In Progress / Complete) | Lusha_Verification_Status__c |
Step 2 — Add a suppression status to Campaign Member
In Salesforce Setup, go to Object Manager → Campaign Member Status. Add “Suppressed — Departed” as a member status value. This allows the Flow to update individual campaign members without removing them from the campaign — preserving the record for reporting while excluding them from the send.
Step 3 — Build the Record-Triggered Flow
In Salesforce Flow Builder, create a new Record-Triggered Flow:
- Object: Campaign
- Trigger: A record is updated
- Entry condition: Status changes to “Ready to Send” AND Lusha_Verification_Status__c is null
- Get Records: query all Campaign Members related to this campaign
- Loop: iterate through each campaign member
- For each member: HTTP Callout to
/v2/contacts/search with member email - Decision: Departed → update member status to “Suppressed — Departed”, increment suppression counter. Email changed → update email, increment email counter. Title changed → update title, increment title counter. Confirmed → increment confirmed counter
- After loop: update Campaign record with verification summary fields and set Lusha_Verification_Status__c to “Complete”
- Save and activate
Step 4 — Add verification summary to Campaign page layout
In Salesforce Setup, go to Object Manager → Campaign → Page Layouts. Add the Lusha verification fields to a dedicated “Lusha Verification” section near the top of the Campaign layout. Campaign managers see the full verification summary — contacts confirmed, suppressed, updated — before approving the send.
Step 5 — Test with a small campaign
Create a test campaign with 10 to 20 campaign members including at least one contact you know has recently changed companies. Set the campaign status to “Ready to Send” and confirm the Flow fires, verifications run, the departed contact is suppressed, and the summary fields populate on the Campaign record. Full troubleshooting guidance at docs.lusha.com/guides.
Example outputs in this workflow are illustrative — they reflect the structure, fields, and format of real Lusha API output, but were not pulled from a live session. Build this workflow with your own Lusha API key and Salesforce org to see live results.