AI and outreach
Email warmup
A new sending domain has no reputation, and mailbox providers treat a sudden burst of email from one as suspicious. Warmup raises your daily volume in steps over five weeks, so the domain builds a record before you send at full volume.
What it is for
Warm up any domain or mailbox you have not sent cold email from before. Scrappy sets a daily limit for each week, tracks opens, replies, bounces and spam complaints, and pauses the warmup if the numbers turn bad.
Warm up a domain
- Open the Warmup Domains page (
/dashboard/warmup-domains) and choose Add Warmup Domain. - Enter the domain and the email address you will send from. The display name is optional.
- Configure the DNS records for the domain with your DNS provider, then tick them off in the DNS checklist on the domain's page.
- Start the warmup. Scrappy records the start date and an estimated ready date five weeks out.
- Check the domain's page as the weeks pass. The stage and daily limit move up on their own.
DNS records
Three records tell receiving servers that your email is authorized:
| Record | What it does | Needed to start |
|---|---|---|
| SPF | Lists the servers allowed to send for the domain. | Yes |
| DKIM | Signs each message so the receiver can check it was not altered. | Yes |
| DMARC | Tells receivers what to do with mail that fails SPF or DKIM. | Recommended |
A warmup will not start until SPF and DKIM are marked as configured.
The five-week ramp
| Stage | Daily limit | Length |
|---|---|---|
WEEK_1 | 5 emails | 7 days |
WEEK_2 | 15 emails | 7 days |
WEEK_3 | 25 emails | 7 days |
WEEK_4 | 40 emails | 7 days |
WEEK_5 | 50 emails | 7 days |
COMPLETE | 100 emails | Ongoing |
Automatic pauses
Scrappy watches two rates and pauses the warmup when either crosses its threshold:
- a bounce rate above 10%, or
- a spam complaint rate above 0.5%.
A paused domain is set to PAUSED, not FAILED, and carries a failureReason saying which threshold was crossed. Fix the cause first: clean the list with email validationif bounces were the problem, or review your content if complaints were. Then resume from the domain's page, or over the API:
curl -X PATCH https://scrappy.gg/api/warmup-domains/WARMUP_ID \-H "Authorization: Bearer sk_your_api_key" \-H "Content-Type: application/json" \-d '{"status": "WARMING_UP"}'
You can pause a warmup yourself the same way, with "status": "PAUSED". Those are the only two status changes you can make by hand.
Statuses
| Status | Meaning |
|---|---|
PENDING | Just created, not yet configured. |
CONFIGURING | DNS records are being set up. |
WARMING_UP | The warmup is running. |
READY | Full volume is allowed. |
PAUSED | Paused by you, or automatically after a threshold was crossed. |
FAILED | A critical issue was detected. |
Track progress
The domain's page shows warmup progress, the current stage and the metrics so far. The same data is returned by GET /api/warmup-domains/{id}:
{"id": "warmup_123","domain": "outreach.example.com","status": "WARMING_UP","warmupStage": "WEEK_2","dailyLimit": 15,"emailsSentToday": 8,"totalEmailsSent": 150,"openRate": 45.5,"replyRate": 12.3,"bounceRate": 2.1,"estimatedReadyDate": "2024-02-05T00:00:00Z"}
List all your domains with GET /api/warmup-domains, optionally filtered by projectId or status. Metrics are recorded through POST /api/warmup-domains/{id}/metrics, which takes emailsSent, opens, replies, bounces and spamComplaints; the rates and the automatic pause are calculated from those counts.
Use the API
# 1. Add the domaincurl -X POST https://scrappy.gg/api/warmup-domains \-H "Authorization: Bearer sk_your_api_key" \-H "Content-Type: application/json" \-d '{"domain": "outreach.example.com","emailAddress": "sales@outreach.example.com","displayName": "Sales Team","projectId": "project_123"}'# 2. Record that the DNS records are in placecurl -X PATCH https://scrappy.gg/api/warmup-domains/WARMUP_ID \-H "Authorization: Bearer sk_your_api_key" \-H "Content-Type: application/json" \-d '{"spfConfigured": true, "dkimConfigured": true, "dmarcConfigured": true}'# 3. Start the warmupcurl -X POST https://scrappy.gg/api/warmup-domains/WARMUP_ID/start \-H "Authorization: Bearer sk_your_api_key"
Warmup contacts, the addresses a warming domain exchanges email with, are managed on the same dashboard page and at /api/warmup-contacts.
Where to go next
- Cold email with AngelSend: send once the domain is ready.
- Email validation: keep the bounce rate under the threshold.
- Chat agent: list warmup domains and pause or resume one by asking.