← EmailitCONTENT HISTORY

Update to Emailit

Snapshot Oct 24, 2026 · 13:47 UTC · version 1.0.1

Collection source: downloaded plugin package.

WHAT CHANGED

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 JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "This skill should be used when the user asks to \"create a campaign\", \"send a newsletter\", \"schedule a campaign\", \"build an audience\", \"import contacts\", \"create a welcome series\", \"set up an automation\", \"add a signup form\", or \"see campaign results\" in Emailit. Covers audiences, contacts, campaigns, automations, and signup forms, with safe sending.",
  "included_files": [
    {
      "relative_path": "references/automations.md",
      "size_in_bytes": 5289
    },
    {
      "relative_path": "references/campaigns.md",
      "size_in_bytes": 3221
    }
  ],
  "name": "emailit-campaigns",
  "skill_md_contents": "---\nname: emailit-campaigns\ndescription: This skill should be used when the user asks to \"create a campaign\", \"send a newsletter\", \"schedule a campaign\", \"build an audience\", \"import contacts\", \"create a welcome series\", \"set up an automation\", \"add a signup form\", or \"see campaign results\" in Emailit. Covers audiences, contacts, campaigns, automations, and signup forms, with safe sending.\n---\n\n# Emailit campaigns, automations, and audiences\n\nMarketing email in Emailit is built from audiences (lists of subscribers), campaigns (one send to one or more audiences), automations (event driven flows), and forms (signup capture). Every recipient must have opted in.\n\n## Before anything sends\n\n- Confirm the workspace with `get-current-workspace`.\n- Confirm a verified sending domain with `list-domains`. The campaign `from_email` must use it.\n- Confirm consent: never send to purchased, rented, or scraped lists. If the user mentions one, decline and explain why.\n- Show a summary and wait for an explicit yes before `send-campaign`, `trigger-automation`, or `start-automation`.\n\n## Audiences and contacts\n\n- Create a list: `create-audience` with `name`.\n- Add someone: `add-audience-subscriber` with the audience `id`, `email`, and optional `first_name`, `last_name`, `custom_fields`. It creates the contact if needed.\n- Contacts across all audiences: `list-contacts`, `get-contact`, `create-contact` (can join `audiences` directly), `update-contact`.\n- Many at once, up to 100 contact IDs per call: `bulk-add-contacts-to-audience`, `bulk-remove-contacts-from-audience`, `bulk-unsubscribe-contacts`, `bulk-resubscribe-contacts`, `bulk-delete-contacts`. Confirm deletes and unsubscribes, and only resubscribe people who asked for email again.\n- Export: `export-contacts` returns CSV for the matching contacts.\n\nFor large imports (thousands of rows) point the user to CSV import in the dashboard; tool calls one at a time are slow and rate limited.\n\n## Campaigns\n\nFlow: **create draft, set recipients, review, test, send or schedule.**\n\n1. `create-campaign` with `name`, `subject`, `from_email`, `from_name`, `preview_text`, `content`, and `content_type` (use `html`, or `text` for plain text). It returns a draft (`cmp_...`).\n2. `update-campaign` with `recipients: [{ \"audience_id\": \"aud_...\" }]`. Add `\"exclude\": true` to leave out an audience. Passing `recipients` replaces the whole list, and at least one included audience is required.\n3. Review: `get-campaign`. Read back the subject, from, and `recipients` (audiences and exclusions); it has no recipient count. For a rough size, `get-audience` shows each audience's `subscribers_count`, before exclusions, unsubscribes, and suppressions. Show the content summary.\n4. Test: offer to `send-email` the same subject and HTML to the user's own address first.\n5. Send: after a clear yes, `send-campaign` with the `id`. Add `scheduled_at` (ISO 8601) to schedule it instead.\n6. Stop it: `cancel-campaign` works on draft and sending campaigns. A scheduled campaign cannot be canceled; `delete-campaign` removes it so it never sends. Confirm either one first.\n\nPersonalize with `{{first_name}}`, `{{last_name}}`, `{{email}}`, `{{cf.<field>}}` for custom fields, and `{{unsubscribe_url}}`. Empty values render as blank, so write copy that still reads well without a first name. Emailit adds List-Unsubscribe headers but no unsubscribe link or footer to the body, so every campaign body must contain `{{unsubscribe_url}}`.\n\nCampaign writing guidance and an HTML starter are in `references/campaigns.md`.\n\n### Results\n\n`get-campaign` returns the status, `sent_at`, and the recipient audiences. Engagement totals per campaign are shown in the dashboard report. Through the tools, use `list-events` with `type` such as `campaign.sent`, `email.clicked`, or `email.bounced`, and note that opens are approximate.\n\n## Automations\n\nAn automation is a graph of steps. A trigger step starts a run; action steps run in order along connections.\n\n1. Pick the `context`:\n   - `contact`: runs per contact (audience joins, updates, dates, clicks).\n   - `email`: runs per email event (delivered, bounced, received).\n   - `event`: runs on a custom `event.*` trigger.\n2. `create-automation` with `name`, `context`, `steps`, and `connections`. It is created as a draft.\n3. Check it with `get-automation`. Explain the flow in plain words.\n4. `start-automation` after the user confirms. `pause-automation` and `stop-automation` stop new runs.\n5. Monitor with `list-automation-runs` (`page` and `per_page`, optional `status`), `get-automation-run`, `get-automation-stats`, and `get-automation-step-stats`.\n\nStep shape:\n\n```json\n{ \"key\": \"welcome\", \"type\": \"action\", \"action\": \"send_email\", \"config\": { \"type\": \"template\", \"template_id\": \"tem_...\" } }\n```\n\nConnections join step keys: `{ \"from\": \"trigger\", \"to\": \"welcome\" }`. After a `condition` step use `\"branch\": \"yes\"` or `\"branch\": \"no\"`. After an `experiment` step use the variant key as the branch.\n\nValid triggers and actions for each context, config fields, and full examples are in `references/automations.md`. `send_email` steps send a published template, so create and publish the template first (`create-template`, `publish-template`).\n\n## Forms\n\n- `create-form` with `name` and `type` (`popup`, `full_page`, `flyout`, `embed`, or `banner`). The form `definition` and `settings` are easiest to design in the dashboard editor; offer to create a draft and let the user style it there.\n- `publish-form` starts collecting signups; `unpublish-form` stops it.\n- `reset-form-token` invalidates the old embed token. Embedded forms stop working until the snippet is updated, so confirm first.\n\n## Common requests\n\n| Request | Tools |\n| --- | --- |\n| \"Send our April newsletter to Customers\" | `list-audiences`, `create-campaign`, `update-campaign`, `get-campaign`, then confirm and `send-campaign` |\n| \"Welcome new subscribers\" | `create-template`, `publish-template`, `create-automation` (trigger `contact.added_to_audience` with `audience_id`), `start-automation` |\n| \"How did last week's campaign do?\" | `list-campaigns`, `get-campaign` |\n| \"Remove everyone who bounced from this list\" | `list-suppressions` (type bounce), `list-audience-subscribers`, `remove-audience-subscriber` after confirming |\n"
}

SHA-256 of public snapshot: 1d53e82ecbc45e5bc7c0519c9a4e4e84d6971f0d225a42b8c705ef2946572fa8