Marketing

Run campaigns and templates from Email Suites. Public API tokens can create campaigns and send email to explicit recipient lists.

Generally availableOpenAPIMarkdown

Overview

Marketing holds campaigns and templates in Email Suites, with a public Marketing API for backends and agents. Create a Marketing token with marketing:send. Email campaign send uses platform email providers and requires Business Email entitlement as well.

ItemValue
ServiceMarketing
StatusPublic Marketing API generally available · dashboard Growth CRUD live
Permissionsmarketing:send
Live token shapeumk_live_marketing_<prefix>_<secret>
Test token shapeumk_test_marketing_<prefix>_<secret>
DashboardDashboard → Email Suites → Marketing
OpenAPI/developers/openapi-marketing.json
Docs (AI)/developers/marketing.md
Email send requires audience_json.emails[] (explicit addresses). Segment names like active-customers are not resolved automatically. SMS/WhatsApp/push send is not supported on the public API yet.

Get started

  1. Enable Marketing in Dashboard → Billing. For email send also enable Business Email.
  2. Open Dashboard → Email Suites → Marketing (optional UI).
  3. Dashboard → Developers → create token → product Marketing → marketing:send.
  4. Store the secret server-side only.
  5. Create a campaign with audience_json.emails and content_json.subject + html/text/body, then POST …/send.

API tokens

Authorization: Bearer umk_live_marketing_<prefix>_<secret>
API base: https://umneyconnect.com/api
PermissionAllows
marketing:sendList/create campaigns & templates; send email campaigns on the public Marketing API

Concepts

ResourceDescription
Campaignname, channel, status, audience_json, content_json
Templatename, kind, body_json
Send (email)Delivers to audience_json.emails via platform email; logs to transactional activity

Public Marketing API (token — live)

MethodPathPermissionStatus
GET/v1/marketing/campaignsmarketing:sendLive
POST/v1/marketing/campaignsmarketing:sendLive
POST/v1/marketing/campaigns/{id}/sendmarketing:sendLive (email)
GET/v1/marketing/templatesmarketing:sendLive
POST/v1/marketing/templatesmarketing:sendLive

Create + send

# Create
curl -X POST "https://umneyconnect.com/api/v1/marketing/campaigns" \
  -H "Authorization: Bearer $MARKETING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Spring launch",
    "channel": "email",
    "status": "draft",
    "audienceJson": { "emails": ["lead@example.com"] },
    "contentJson": { "subject": "Hello", "html": "<p>Welcome</p>" }
  }'

# Send (also requires Business Email entitlement)
curl -X POST "https://umneyconnect.com/api/v1/marketing/campaigns/{id}/send" \
  -H "Authorization: Bearer $MARKETING_API_KEY"
Send is synchronous, max 50 recipients per call. Failed provider config returns 503 when all recipients fail. Optional body on send can override audienceJson/contentJson for that run only.

Dashboard Growth API (JWT — live)

MethodPathPurpose
GET|POST|PATCH|DELETE/api/growth/marketing/campaignsCampaign CRUD
GET|POST/api/growth/marketing/templatesTemplates
GET/api/growth/marketing/statisticsStats
GET/api/growth/entitlementsAddon flags

Contact sync (Business Email)

Provider list/audience upsert: public POST /v1/email/contacts (email:send) or dashboard POST /api/mail/marketing/contact — see /developers/business-email.

Errors

  • 403 — Marketing not entitled / wrong token / missing marketing:send
  • 403 on send — Business Email not entitled
  • 400 — missing emails[], subject, or body; non-email channel
  • 503 — all recipient sends failed (provider misconfigured)
  • Send rate limit: 30/min IP; public keys 600/min on /api/v1/*

Agent recipe

# Enable Marketing (+ Business Email for send)
MARKETING_API_KEY=umk_live_marketing_…
# POST /v1/marketing/campaigns with audienceJson.emails
# POST /v1/marketing/campaigns/{id}/send
# Prefer customer-facing names — do not expose internal billing catalog IDs