← EmailitCONTENT HISTORY
WHAT CHANGED
Update to Emailit
Snapshot Oct 24, 2026 · 13:47 UTC · version 1.0.1
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Emailit and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "This skill should be used when the user asks to \"integrate Emailit\", \"send email from my app\", \"add Emailit to Node\", \"use Emailit with Laravel\", \"send email in Python with Emailit\", \"configure Emailit SMTP\", \"switch from SendGrid or Resend to Emailit\", or is writing code that calls api.emailit.com. Covers the official SDKs (Node, Python, PHP, Laravel, Go, Ruby, Java, .NET, Rust), SMTP, configuration, templates, attachments, idempotency, and error handling.",
"included_files": [
{
"relative_path": "references/languages.md",
"size_in_bytes": 5711
},
{
"relative_path": "references/patterns.md",
"size_in_bytes": 3692
}
],
"name": "emailit-sdk",
"skill_md_contents": "---\nname: emailit-sdk\ndescription: This skill should be used when the user asks to \"integrate Emailit\", \"send email from my app\", \"add Emailit to Node\", \"use Emailit with Laravel\", \"send email in Python with Emailit\", \"configure Emailit SMTP\", \"switch from SendGrid or Resend to Emailit\", or is writing code that calls api.emailit.com. Covers the official SDKs (Node, Python, PHP, Laravel, Go, Ruby, Java, .NET, Rust), SMTP, configuration, templates, attachments, idempotency, and error handling.\n---\n\n# Emailit in application code\n\nWrite production ready code that sends through Emailit. Detect the project's language and framework from its files (`package.json`, `requirements.txt` or `pyproject.toml`, `composer.json`, `go.mod`, `Gemfile`, `pom.xml` or `build.gradle`, `*.csproj`, `Cargo.toml`) and use the matching SDK.\n\n## Rules\n\n1. **Read the key from the environment**: `EMAILIT_API_KEY`. Add it to `.env.example` with a placeholder, never to committed config. Keys start with `secret_`.\n2. **Use a sending scope key** in apps that only send. Create one in the dashboard on the **API Keys** page (or with the `create-api-key` tool, `scope: \"sending\"`), optionally limited to one sending domain.\n3. **Send from a verified domain**. Put the from address in config (`EMAIL_FROM`), not scattered through code.\n4. **Send off the request path** for anything user facing: queue a job, so a slow or failed send does not break signup or checkout.\n5. **Make sends idempotent**: pass an `Idempotency-Key` header derived from your own ID (for example `order-1234-shipped`). Emailit returns the first response for repeats within 24 hours.\n6. **Handle errors by type**: retry 429 and 5xx with backoff; do not retry 400, 401, 403, or 422.\n\n## Install and send\n\n| Language | Install | Client |\n| --- | --- | --- |\n| Node.js 18+ | `npm install @emailit/node` | `new Emailit(process.env.EMAILIT_API_KEY)` |\n| Python 3.7+ | `pip install emailit` | `EmailitClient(os.environ[\"EMAILIT_API_KEY\"])` |\n| PHP 8.1+ | `composer require emailit/emailit-php` | `Emailit::client(getenv('EMAILIT_API_KEY'))` |\n| Laravel 10+ | `composer require emailit/emailit-laravel` | `MAIL_MAILER=emailit`, or the `Emailit` facade |\n| Go 1.21+ | `go get github.com/emailit/emailit-go/v2` | `emailit.NewClient(os.Getenv(\"EMAILIT_API_KEY\"))` |\n| Ruby 3.0+ | `gem install emailit` | `Emailit::EmailitClient.new(ENV[\"EMAILIT_API_KEY\"])` |\n| Java 11+ | `com.emailit:emailit-java` | `new EmailitClient(System.getenv(\"EMAILIT_API_KEY\"))` |\n| .NET 8+ | `dotnet add package Emailit` | `new EmailitClient(Environment.GetEnvironmentVariable(\"EMAILIT_API_KEY\"))` |\n| Rust | `emailit = \"2\"` and `tokio` | `Emailit::new(&std::env::var(\"EMAILIT_API_KEY\")?)` |\n\nNode example:\n\n```js\nimport { Emailit } from '@emailit/node';\n\nconst emailit = new Emailit(process.env.EMAILIT_API_KEY);\n\nconst email = await emailit.emails.send({\n from: process.env.EMAIL_FROM,\n to: ['user@example.com'],\n subject: 'Welcome to Acme',\n html: '<p>Thanks for signing up.</p>',\n text: 'Thanks for signing up.',\n});\nconsole.log(email.id); // em_...\n```\n\nFull examples for every language, plus SMTP settings for frameworks with a mail transport (Django, Rails Action Mailer, Nodemailer, Spring), are in `references/languages.md`.\n\n## Beyond a basic send\n\n`references/patterns.md` covers:\n\n- Templates with `{{variables}}`, created once and referenced by alias.\n- Attachments by base64 content or URL, and inline images with `content_id`.\n- Scheduling with `scheduled_at`, and canceling.\n- `meta` for correlating webhook events with your records.\n- Idempotency keys, typed errors, and retry logic.\n- Testing without sending to real people.\n\n## Migrating from another provider\n\nMap the old fields, then swap the client. Most providers use the same concepts:\n\n| Other provider | Emailit |\n| --- | --- |\n| `from`, `to`, `cc`, `bcc`, `reply_to` or `replyTo` | Same names, `reply_to` |\n| Template ID plus dynamic data | `template` (ID or alias) plus `variables` |\n| Custom args, tags, or metadata | `meta` (string values) |\n| `send_at` or `scheduledAt` | `scheduled_at` |\n| Event webhooks | `create-webhook`, signature in `X-Emailit-Signature` |\n\nBefore switching traffic: verify the sending domain in Emailit (`emailit-domain-setup`), import suppressions from the old provider (`create-suppression`, type `bounce`, `complaint`, or `unsubscribe`), and set up webhooks (`emailit-webhooks`).\n\n## Without an SDK\n\nPlain HTTP works from any language:\n\n```bash\ncurl https://api.emailit.com/v2/emails \\\n -H \"Authorization: Bearer $EMAILIT_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -H \"Idempotency-Key: welcome-user-42\" \\\n -d '{\"from\":\"Acme <hello@mail.acme.com>\",\"to\":\"user@example.com\",\"subject\":\"Welcome\",\"html\":\"<p>Hi</p>\"}'\n```\n\nThe full endpoint list is in the `emailit` skill's `references/rest-api.md`.\n"
}SHA-256 of public snapshot: 7cf115bd4fb7619be051d1dd583604f756d3b83299c74c7dd4ce579c6f2a2e78