Skip to main content

Sending emails

Quick rules:
  • send-email when you generate HTML from your system (confirmations, alerts).
  • send-template-email when you have templates in the visual editor and only send variables.
  • send-batch to send the same email (with personalized variables) to many recipients.
Yes. You have two options:
  1. Multiple calls to /v1/send-batch — Split recipients into batches of up to 10,000 and make one call per batch.
  2. Campaigns from the Dashboard — Create a campaign with no limit. The system automatically processes in batches with built-in rate limiting. Ideal for 50k+ emails.
Daily and monthly limits also apply depending on your account. When you reach them, sends are queued and resume on their own. Contact support if you need more capacity.
Yes. Use the scheduled_at field with ISO 8601:
It works in /send-email (accepts ISO 8601, natural language like "tomorrow at 3pm", and the timezone field) and in /v1/send-batch (ISO 8601 only). See Scheduling Sends.
The email is skipped automatically. The behavior depends on the endpoint:
  • /v1/send-template-email: the suppression is detected at request time — it responds 200 with "skipped": true and suppression_reason (see v1 API).
  • /v1/send-email and /send-email: the suppression is detected at request time — it responds 200 with "suppressed": true and reason: "recipient_suppressed", without queuing anything (see Suppressed recipient).
  • /v1/send-batch: the API responds 200 and applies the suppression in the background. The email is never sent; the activity ends up with current_status: "suppressed", which can be queried via the Activity API.
In all API send cases, the email.suppressed webhook is also emitted so you can sync your side.The suppression list includes recipients by:
  • Unsubscribe — click on an unsubscribe link
  • Hard bounce — permanent bounce
  • Complaint — marked as spam
Each send returns an activity_id (or email_id). Delivery events update the status:
Status is visible in Dashboard → Activity, or queryable via the Activity API. For send-batch, there’s one activity_id per recipient.

Domains and deliverability

Most common causes:
  1. Unverified domain — DKIM, SPF, DMARC. Verify with POST /domains/:domain/verify.
  2. Cold domain — needs gradual warming: 150 emails on day 1, 250 on day 2, 400 on day 3, up to around 2,000 by day 7. Ramping all at once burns the domain.
  3. High bounce or complaint rate — clean your list. Above 4% bounces you should pause; above 0.1% complaints reputation drops fast.
  4. Links that don’t match your domain — if the From is yours but links point elsewhere, filters read it as phishing. Fixed with a tracking domain.
  5. Suspicious content — too many links, all caps, words like “FREE”/“OFFER”/“URGENT”, images without alt text.
  6. No unsubscribe link — ReallyQuickEmails adds List-Unsubscribe automatically, but include a visible link.
If everything shows as verified and you still land in spam, the problem is reputation, not configuration. See Deliverability and authentication.And don’t use an email you send to yourself within your own domain as a test: Google penalizes it for resembling spoofing, even when everything is set up correctly.
  1. Register the domain with POST /domains/register
  2. Configure the 8 DNS records at your provider:
    • 1 TXT domain verification
    • 3 CNAME DKIM
    • 1 TXT SPF
    • 1 TXT DMARC
    • 1 MX send (Return-Path)
    • 1 TXT send (Return-Path)
  3. Wait 5–10 min for propagation
  4. Verify with POST /domains/:domain/verify
  5. When can_send: true, you’re set
Full guide in Domains.

Templates

Also:
  • Fallback{name || "Customer"}
  • Raw HTML{!htmlContent}
  • Loops{{#each products}}...{{/each}}
  • Conditionals{{#if premium}}...{{/if}}
See Templates and Variables.
Yes. Templates created in the visual editor work in:
  • POST /v1/send-template-email (individual, template_id + variables)
  • POST /v1/send-batch (bulk, templateId + data per recipient)
  • Campaigns from the Dashboard

Campaigns

Rule: send-batch for programmatic integrations. Campaigns for large sends from the UI.
Yes. From the Dashboard you can pause a campaign in processing. Emails already queued keep sending, but no new batches are dispatched. Resume from the Dashboard.
Your account’s sending limit was reached. It resumes automatically when the limit resets. You can also resume it manually from the Dashboard.

API and authentication

  1. Dashboard → your project → Settings → Integrations → API Keys
  2. Copy the corresponding key:
    • Live (sk_live_* or sk_proj_*) → production traffic
    • Test (sk_test_*) → development, doesn’t consume quota
See API Keys for details.
The endpoints don’t have their own rate limiting; the limit is imposed by your account’s sending capacity. When you reach it, emails are queued and sent on their own once capacity is available.
Pass an Idempotency-Key: <unique-string> header (1–256 characters) in /send-email or /v1/send-batch. A retry with the same key within 24h returns the cached response with Idempotency-Replayed: true. See API Keys.

Support

Contact us at harold@dropout.cl, including: Project ID, endpoint used, request body, error/response, and approximate timestamp.