Overview
MoneyPrinter V2’s outreach automation handles the entire lead generation pipeline:Niche Definition
Specify the type of businesses you want to reach (e.g., “restaurants in New York”, “law firms in California”)
Setup Requirements
System Dependencies
Go Programming Language
Required to build the Google Maps scraper. Install from golang.org
Email Configuration
Inconfig.json, configure SMTP settings:
Your email address for sending outreach emails
App-specific password (for Gmail, generate at myaccount.google.com/apppasswords)
SMTP server address for your email provider
SMTP port (typically 587 for TLS, 465 for SSL)
Search query for Google Maps (e.g., “dentists in Austin, TX”)
Maximum seconds to run the scraper (longer = more results)
Email Template
Create a message template atassets/outreach_template.txt:
{{COMPANY_NAME}} is automatically replaced with each business’s name from the scraped data.Scraper Setup
The first time you run outreach, MoneyPrinter V2 automatically:Running an Outreach Campaign
From the main menu, select Outreach:Scraping Process
Niche File Creation
Scraper Execution
.mp/cache/results.csv.
Output Format
Scraper results are CSV-formatted:Email Extraction
For each business with a website, the system attempts to extract an email address:Extraction Logic
Regex Matching
Searches HTML content for email patterns (e.g.,
[email protected])Email Sending
SMTP Connection
Message Personalization
Personalization Variables
Replaced with the scraped business name in both subject and body
Error Handling
The outreach process includes comprehensive error handling:Website Validation
Verifies websites return 200 status before attempting email extraction
Email Validation
Checks for
@ symbol before attempting to sendException Catching
Individual email failures don’t stop the entire campaign
Verbose Logging
Detailed logs help debug issues with specific businesses
Troubleshooting
Go is not installed error
Go is not installed error
Scraper finds 0 results
Scraper finds 0 results
Causes:
- Niche query is too specific or misspelled
- Google Maps rate limiting
- Network connectivity issues
- Broaden your niche (“coffee shops California” vs. “specialty roasters in San Francisco Financial District”)
- Increase
scraper_timeoutto allow more scraping time - Check internet connection and firewall settings
No emails extracted
No emails extracted
Causes:
- Businesses use contact forms instead of displaying emails
- Websites protect emails (e.g.,
contact [at] example [dot] com) - JavaScript-rendered email addresses
- Manually find emails for high-value targets
- Use services like Hunter.io for email enrichment
- Modify regex pattern in
Outreach.py:181for obfuscated formats
SMTP authentication failed
SMTP authentication failed
For Gmail users:
- Enable 2-factor authentication
- Generate an App Password at myaccount.google.com/apppasswords
- Use the App Password (not your regular password) in
config.json
- Verify SMTP server and port are correct
- Check if your provider requires SSL (port 465) or TLS (port 587)
- Ensure “less secure app access” is enabled if required
Emails marked as spam
Emails marked as spam
Solutions:
- Warm up your email address by sending low volumes initially
- Add SPF and DKIM records to your domain
- Personalize messages more (avoid generic templates)
- Include an unsubscribe option
- Use a professional email domain (not Gmail) for business outreach
Scraper timeout expired
Scraper timeout expired
Cause: Timeout too short for the number of results Google Maps needs to load.Solution: Increase timeout in
config.json:Best Practices
Niche Targeting
Be specific but not overly restrictive. “Yoga studios in Brooklyn” > “businesses in New York”
Message Quality
Personalize beyond company name. Research your target niche’s pain points.
Volume Control
Start with 10-20 emails per day to avoid spam flags. Scale gradually.
Legal Compliance
Follow CAN-SPAM Act (US) and GDPR (EU) requirements:
- Include physical address
- Provide unsubscribe option
- Honor opt-out requests within 10 days
Value Proposition
Lead with benefits to the recipient, not your service features.
Follow-up Strategy
Don’t spam. One follow-up after 3-5 days max.
Advanced Configuration
Custom Scraper Parameters
The scraper supports additional flags. Modify the command inOutreach.py:227:
Multiple Niche Campaigns
To run campaigns for different niches:-
Sequential Approach: Run outreach multiple times, updating
google_maps_scraper_nicheinconfig.jsonbetween runs -
Programmatic Approach (requires code modification):
Email Rate Limiting
To avoid SMTP provider limits, add delays:Compliance and Ethics
Results Tracking
Scraper results are saved to.mp/cache/results.csv. Track your campaign:
- Add UTM parameters to links in your email template
- Track opens using email marketing services
- Log responses manually or with email integration
- Calculate conversion rate: (Responses / Emails Sent) × 100
Source Code Reference
- Outreach class:
src/classes/Outreach.py - Menu interface:
src/main.py:414-419 - Google Maps scraper: github.com/gosom/google-maps-scraper
- Configuration:
src/config.py