Setup Guide
Complete setup instructions for Zapim X-RAY Platform
Quick Start Checklist
1. Claude API Key (Required)
The Claude API powers all AI agents (research, discovery, personalization, email writing).
Steps:
2. Sign up / login
3. Go to Settings → API Keys → Create Key
4. Copy the key (starts with sk-ant-...)
5. Paste into appsettings.json under Claude:ApiKey
Rate Limits & Tiers:
| Tier | Deposit | Monthly Limit | Requests/Min | Recommended For |
|---|---|---|---|---|
| Tier 1 | $5 | $100 | 50 RPM | Testing only |
| Tier 2 | $40 | $500 | 1,000 RPM | 25-50 lead campaigns |
| Tier 3 | $200 | $1,000 | 2,000 RPM | 100+ lead campaigns |
| Tier 4 | $400 | $5,000 | 4,000 RPM | Production scale |
For campaigns with 25+ leads, Tier 2 ($40 deposit) is the minimum recommended tier.
2. Gmail SMTP Setup (Required for Email Sending)
Emails are sent via SMTP. Gmail works best with App Passwords.
Central SMTP (Admin configures in appsettings.json):
"Host": "smtp.gmail.com",
"Port": "587",
"Username": "your-email@gmail.com",
"Password": "your-16-char-app-password",
"FromName": "Zapim",
"FromEmail": "your-email@gmail.com"
}
How to get a Gmail App Password:
2. Ensure 2-Step Verification is turned ON (required)
3. Search for "App passwords" in the security settings search bar
4. Or go directly to: myaccount.google.com/apppasswords
5. Select app: Mail, Device: Other (name it "Zapim XRAY")
6. Click Generate → copy the 16-character password
7. Paste as the SMTP password (no spaces)
Per-Agent SMTP (each agent sends from their own email):
2. Enable "Use my own SMTP"
3. Enter their Gmail + App Password
4. Emails they send will come FROM their personal Gmail
5. If not configured, the central SMTP is used as fallback
Gmail sending limits: ~500 emails/day for personal Gmail, ~2,000/day for Google Workspace. For higher volumes, consider SendGrid or Amazon SES.
3. Contact Discovery APIs (Optional)
These APIs find decision-maker email addresses. All are optional — Claude AI fallback works without any of them.
| Platform | Best For | Free Tier | Paid | Config Key | Get Key |
|---|---|---|---|---|---|
| Apollo.io | Management/C-level contacts | 50 credits/mo FREE | $49/mo (2,500) | Apollo:ApiKey | Get Key |
| Hunter.io | Domain-wide email discovery | 25 searches/mo FREE | $49/mo (500) | Hunter:ApiKey | Get Key |
| Snov.io | Domain emails + prospecting | No free tier | $29/mo (1,000 credits) | Snov:UserId + Snov:ApiSecret | Get Keys |
| RocketReach | People search + phones | No free tier | $26/mo (40 lookups) | RocketReach:ApiKey | Get Key |
| ZeroBounce | Email verification | 100 verif/mo FREE | $39 for 2,000 | ZeroBounce:ApiKey | Get Key |
| Claude AI | Web search fallback | Uses your API | ~$0.03/company | Claude:ApiKey (same) | Already configured |
Snov.io & RocketReach have NO free tiers. Only configure if you have a paid subscription.
Snov.io note: Snov uses a User ID + API Secret pair (not a single key). Find both at app.snov.io/integration/api.
Platform Priority: Configure in ContactFinder:PlatformPriority. Default: Apollo,Hunter,Claude. Only add Snov/RocketReach if you have paid plans. Select a single engine per campaign from the Launch page.
4. Google OAuth (Optional)
Enable "Sign in with Google" for your team. Without this, email/password login still works.
2. Create a project (or use existing)
3. Go to APIs & Services → Credentials
4. Click Create Credentials → OAuth Client ID
5. Application type: Web application
6. Add Authorized redirect URI: https://your-domain/signin-google
7. Copy Client ID and Client Secret
8. Paste into appsettings.json under Authentication:Google
5. Email Management & Follow-ups
How email sending works:
2. When you click "Send All" or send individually, emails go out via SMTP
3. Each email contains a 1x1 tracking pixel for open detection
4. All sent emails appear in the Inbox page
5. You can reply to leads directly from the portal
Test Mode:
Subject gets tagged: [TEST → real@email.com] Original Subject
The email body shows a yellow banner indicating test mode.
Set to false to go live.
Automated Follow-ups:
AI generates follow-up emails that reference the original email
Follow-ups auto-cancel when a lead replies or is marked as replied
You can send follow-ups early or cancel them from the Inbox thread view
Follow-up processor runs every 15 minutes automatically
Inbound replies:
When logged, all pending follow-ups for that lead are automatically cancelled.
The lead status changes to "Replied" and appears in dashboard analytics.
Future: Gmail API integration for automatic reply detection.
6. Roles & Permissions
| Role | Can Do | Cannot Do |
|---|---|---|
| Admin | Everything — manage users, assign roles, see all campaigns, configure APIs, view cost audit, manage settings | — |
| Manager | Create campaigns, see all team campaigns, assign agents to campaigns, manage leads | User management, settings, cost audit |
| Agent | See only assigned campaigns, send emails (from own SMTP if configured), manage their leads, use inbox | Create campaigns, see other agents' data, admin pages |
First user login auto-creates as Agent. Admin promotes users via Users & Roles page.
Default admin: admin@zapim.com / Admin@123 (change in appsettings.json).
7. Cost Estimates
| Campaign Size | Claude API | Contact APIs | Total | |
|---|---|---|---|---|
| 10 leads | ~$2 | Free tier | Free | ~$2 |
| 25 leads | ~$5 | Free tier | Free | ~$5 |
| 50 leads | ~$10 | ~$5 | Free | ~$15 |
| 100 leads | ~$19 | ~$15 | Free | ~$34 |
| 500 leads/mo | ~$92 | ~$50 | Free | ~$142 |
Every API call is logged with estimated cost in the Cost Audit page (Admin only).
Using only Claude for contact discovery (no Apollo/Hunter) adds ~$0.03/lead but avoids external API costs entirely.