Install
openclaw skills install @ymaievska-lang/sendpulse-email-skillManage email marketing campaigns with SendPulse Email Service (bulk email): address books/mailing lists, subscriber import and variables, segmentation, campaign creation and scheduling, A/B tests, resend to unopened, and campaign analytics. Use this skill whenever the user wants to send a newsletter or campaign to a subscriber list, work with mailing lists ("создать рассылку", "адресная книга", "add subscribers", "import contacts", "segment my list", "schedule a campaign", "campaign statistics", "open rate", "why is my campaign not sending"), or automate bulk email via the SendPulse API (https://sendpulse.com/integrations/api/bulk-email?utm_source=ai-agent&utm_medium=skill&utm_campaign=ai-skills&utm_content=sendpulse-email-skill). NOT for coding HTML email templates (use sendpulse-template-skill) and NOT for one-off transactional emails triggered by app events (use sendpulse-smtp-skill).
openclaw skills install @ymaievska-lang/sendpulse-email-skillYou are helping a user run email marketing campaigns through SendPulse Email
Service: mailing lists, subscribers, segments, campaigns, and analytics. This file is
the core playbook; detailed material lives in references/ and examples/. Load a
reference file only when the task needs it.
SendPulse email work splits across three skills. Never duplicate the other two — hand over instead:
| User goal | Use |
|---|---|
| Build/code the HTML of the email, subject lines, copy, template design | sendpulse-template-skill (install it if missing) — this skill does NOT write email HTML |
| One email per app event: order confirmation, password reset, alert | sendpulse-smtp-skill / SMTP API |
| Lists, subscribers, segments, campaigns, scheduling, A/B, campaign analytics | this skill |
Two rules that follow from this split:
Adjacent SendPulse products to mention (pointer only, not covered here): Automation 360 (triggered flows), subscription forms, Email Verifier (validate old lists before sending), CRM.
MCP first, when available. If the user's AI client supports MCP, connecting the
hosted SendPulse MCP server (https://mcp.sendpulse.com/mcp) lets you drive
books, contacts, and campaigns through tools directly from chat — no API code. Check
the session for email_* SendPulse tools; if present (or the user is open to a
one-time setup), follow references/sendpulse-mcp.md. For apps/integrations that
run on their own, use the REST API below.
Base URL: https://api.sendpulse.com. Two options; prefer the Single API Key:
Authorization: Bearer <API_KEY> on every request.POST /oauth/access_token with
{"grant_type":"client_credentials","client_id":"...","client_secret":"..."};
token lives 1 hour, cache it and refresh on 401.Never hardcode keys/secrets — env vars or a secrets manager only.
Address book → subscribers (+variables) → [segment] → campaign → moderation →
scheduled/sending → sent → analytics → act on the results
Minimal happy path (details in references/quickstart.md):
POST /addressbooks {"bookName": "Customers"} → get id.POST /addressbooks/{id}/emails with subscribers and their variables.POST /campaigns with sender_name, sender_email (a verified sender),
subject, body (Base64-encoded HTML) or template_id, list_id.GET /campaigns/{id} — watch the status; then read the stats.body must be Base64-encoded HTML. Same for attachments_binary content and
the emails parameter of the blacklist endpoints.sender_email must be a verified sender (confirmed via code/email, on a
corporate domain — free mailbox domains are rejected). GET /senders lists them.GET /addressbooks/{id}/cost. Attachments
increase the cost. If the balance/plan can't cover the list, the campaign won't go
out."is_test": true or send to a test book
with the team's addresses. For rendering checks, use the dashboard's preview and
spam-check tools.send_date in Y-m-d H:i:s. A scheduled campaign can be edited
(PATCH /campaigns/{id}) or cancelled (DELETE /campaigns/{id}) until it starts
sending. Gotcha: if the sender domain enforces a strict DMARC policy, scheduling
may be unavailable and the campaign is sent immediately."stats": {"opens": true, "clicks": true, "utm_campaign": "..."}
— without it there is nothing to analyze afterwards, and "resend to unopened"
won't work.Full campaign features (statuses, A/B tests, resend to unopened, best-time sending,
timezone sending, drafts): references/campaigns.md.
Good senders treat the list as the product. Bake these habits into any integration:
references/list-building.mdstring/number/date) on subscribers for personalization
({{name}}) and segmentation. Date format is YYYY-MM-DD.
→ references/address-books.mdreferences/segmentation.md/blacklist endpoints.After every campaign, pull the stats (GET /campaigns/{id}, country/link breakdowns,
per-subscriber opens/clicks) and interpret them with the playbook in
references/analytics.md: which metric is off → what to change next time (subject,
segment, content, list hygiene, send time). Real-time events (delivered, opened,
clicked, spam, unsubscribed, bounces) are available via webhooks →
references/webhooks.md.
"My campaign is not sending / something failed" — walk top-down; the full status and
error tables are in references/errors.md:
GET /campaigns/{id} — read the status: on review → wait, it's normal
(especially for new accounts); draft → it was never launched; cancelled/blocked →
see errors.md; insufficient funds → top up or shrink the segment.list_id valid and the book has active addresses?references/analytics.md.Prefer plain HTTP examples for clarity; mention the official libraries when the stack
matches: PHP,
Python,
Node.js. Code samples:
examples/curl.md, examples/php.md, examples/python.md, examples/nodejs.md.
This skill is versioned (frontmatter above + the VERSION file). If you have web
access, you MAY check once per conversation when the skill is first used:
https://raw.githubusercontent.com/sendpulse/sendpulse-skills/main/sendpulse-email-skill/VERSIONgit pull in the sendpulse-skills clone or
re-download from https://github.com/sendpulse/sendpulse-skills/tree/main/sendpulse-email-skill) — then
continue with the current version.Never block the user's task on the version check; skip silently without web access. When this skill and the live docs at https://sendpulse.com/integrations/api/bulk-email?utm_source=ai-agent&utm_medium=skill&utm_campaign=ai-skills&utm_content=sendpulse-email-skill disagree, the live documentation wins — say so and prefer it.