Quick Overview
This workflow reads LinkedIn profile URLs from Google Sheets, enriches each lead using PhantomBuster profile and company scrapers, finds a work email via Hunter.io with a Dropcontact fallback, writes results back to Google Sheets, and posts optional batch summaries to Slack.
How it works
- Runs manually or every day at 8:00 AM and loads pipeline configuration values used by downstream steps.
- Reads rows from the
Leads tab in Google Sheets and keeps only entries with a LinkedIn URL that have not been enriched yet.
- Processes leads in batches of five, validates each LinkedIn
/in/ URL, and marks invalid URLs as Failed in Google Sheets.
- For valid URLs, runs PhantomBuster’s LinkedIn Profile Scraper, waits for completion, and stops with a
Failed status if no profile data is returned.
- Uses PhantomBuster’s LinkedIn Company Scraper to extract company details such as website/domain from the profile’s company URL.
- Looks up a work email with Hunter.io using the person’s name and company domain, and falls back to Dropcontact enrichment when Hunter returns no email.
- Updates the original Google Sheets row with the enriched fields (and
enrichment_status set to Enriched or Email Not Found), waits three seconds between batches, and posts a Slack webhook summary after each batch if configured.
Setup
- Create a Google Sheets OAuth credential with edit access and set the target spreadsheet ID in the workflow configuration.
- Add a PhantomBuster credential, provide your Profile Scraper and Company Scraper agent IDs, and fill in the required LinkedIn values (li_at session cookie, PhantomBuster identity ID, and a user agent string).
- Add credentials for Hunter.io and Dropcontact so the workflow can perform email discovery and fallback enrichment.
- Prepare a Google Sheet tab named
Leads with a linkedin_url column plus output columns like enrichment_status, first_name, last_name, email, phone_numer, Company name, role, website, and email_source.
- (Optional) Create a Slack incoming webhook, paste its URL into the configuration (or leave it empty to disable notifications), and ensure the webhook can post to your intended channel.