This guide covers the patterns and strategies that high-performing SmartLead integrations use in production. Whether you’re building a custom outreach tool, syncing with your CRM, or automating campaign management, these best practices will help you get better results and avoid common pitfalls.
Before sending any emails, ensure these DNS records are properly set up for every sending domain:
Record
What It Does
Priority
SPF
Authorizes which servers can send email from your domain
Required
DKIM
Adds a cryptographic signature to verify email authenticity
Required
DMARC
Defines how receivers handle SPF/DKIM failures
Required
Custom Tracking Domain
Uses your domain for open/click tracking links
Recommended
Missing DNS records is the most common cause of deliverability issues. Set these up before enabling warmup — warming up an account with bad DNS records can actively harm your domain reputation.
Generic cold emails get ignored. Use custom fields to make every email feel hand-written:
Python
lead = { "email": "alex@company.com", "first_name": "Alex", "company_name": "Acme Corp", "custom_fields": { "job_title": "VP of Sales", "industry": "B2B SaaS", "pain_point": "low reply rates on outbound", "mutual_connection": "Jordan at YC", "recent_news": "Series B announcement", "team_size": "50" }}
Then reference them in your sequences:
Hi {{first_name}},Congrats on {{recent_news}} — exciting times at {{company_name}}.Given your role as {{job_title}}, I imagine {{pain_point}} is something you're thinking about.{{mutual_connection}} mentioned you might be open to exploring new approaches...
Always validate custom fields before import to prevent sending emails with empty placeholders:
Python
def validate_lead_personalization(lead, required_fields): """Ensure all required personalization fields are present.""" missing = [] for field in required_fields: if field in ["first_name", "last_name", "email", "company_name"]: if not lead.get(field): missing.append(field) else: if not lead.get("custom_fields", {}).get(field): missing.append(field) return missing# Check before importrequired = ["first_name", "company_name", "job_title", "industry"]for lead in lead_list: missing = validate_lead_personalization(lead, required) if missing: print(f"Lead {lead['email']} missing: {', '.join(missing)}")
If a custom field might be empty for some leads, write your email copy to handle it gracefully. Instead of “I noticed is hiring,” use “I noticed your team is growing” as a fallback.
Test one variable at a time and run tests until you have statistical significance:
Python
# Test subject lines on step 1sequence_step = { "seq_number": 1, "subject": "Quick question about {{company_name}}", "email_body": "...", "variants": [ { "subject": "{{first_name}}, thought on {{company_name}}'s outbound", "email_body": "...", # Same body to isolate subject impact "variant_distribution": 50 } ]}
Wait for at least 200 sends per variant before drawing conclusions. Small sample sizes produce unreliable results.
# Good: Environment variableAPI_KEY = os.getenv("SMARTLEAD_API_KEY")# Bad: Hardcoded in sourceAPI_KEY = "sl_abc123..." # Never do this
Never commit API keys to version control, include them in client-side code, or share them in Slack messages. Use environment variables or a secrets manager like AWS Secrets Manager, HashiCorp Vault, or Doppler.