Initial push of Plunk Next
This commit is contained in:
@@ -0,0 +1,247 @@
|
||||
---
|
||||
title: Campaigns
|
||||
description: Send one-time email broadcasts
|
||||
---
|
||||
|
||||
## What are campaigns
|
||||
|
||||
Campaigns are one-time email broadcasts sent to your audience. Use them for:
|
||||
- Product announcements
|
||||
- Newsletter distributions
|
||||
- Seasonal promotions
|
||||
- Feature launches
|
||||
|
||||
Unlike workflows (automated sequences), campaigns send once to a snapshot of your audience.
|
||||
|
||||
## Creating campaigns
|
||||
|
||||
### In the dashboard
|
||||
|
||||
1. Go to **Campaigns**
|
||||
2. Click **Create Campaign**
|
||||
3. Name your campaign
|
||||
4. Choose your audience
|
||||
5. Select a template or compose inline
|
||||
6. Preview and test
|
||||
7. Send or schedule
|
||||
|
||||
### Via API
|
||||
|
||||
```bash
|
||||
curl -X POST {{API_URL}}/campaigns \
|
||||
-H "Authorization: Bearer sk_your_secret_key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "March Newsletter",
|
||||
"subject": "New features this month",
|
||||
"body": "<h1>What'\''s new</h1><p>Check out our latest updates...</p>",
|
||||
"from": "[email protected]",
|
||||
"fromName": "Acme Inc",
|
||||
"audienceType": "ALL",
|
||||
"status": "DRAFT"
|
||||
}'
|
||||
```
|
||||
|
||||
## Choosing your audience
|
||||
|
||||
### All contacts
|
||||
|
||||
Sends to everyone in your project:
|
||||
|
||||
```json
|
||||
{
|
||||
"audienceType": "ALL"
|
||||
}
|
||||
```
|
||||
|
||||
### Specific segment
|
||||
|
||||
Sends to contacts in a saved segment:
|
||||
|
||||
```json
|
||||
{
|
||||
"audienceType": "SEGMENT",
|
||||
"segmentId": "premium-users"
|
||||
}
|
||||
```
|
||||
|
||||
### Custom filters
|
||||
|
||||
Sends to contacts matching conditions:
|
||||
|
||||
```json
|
||||
{
|
||||
"audienceType": "FILTERED",
|
||||
"audienceFilter": {
|
||||
"operator": "AND",
|
||||
"conditions": [
|
||||
{ "field": "data.plan", "operator": "equals", "value": "pro" },
|
||||
{ "field": "data.lastLoginAt", "operator": "greaterThan", "value": "2024-01-01" }
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Subscription handling
|
||||
|
||||
Campaign delivery respects your **template type**:
|
||||
|
||||
**Marketing templates** (default)
|
||||
- Only sends to subscribed contacts
|
||||
- Unsubscribed contacts are skipped automatically
|
||||
- Includes unsubscribe link
|
||||
|
||||
**Transactional templates**
|
||||
- Sends to all contacts, even if unsubscribed
|
||||
- Use only for critical business emails
|
||||
- No unsubscribe link
|
||||
|
||||
Choose template type based on content, not audience size.
|
||||
|
||||
## Campaign states
|
||||
|
||||
**DRAFT** — Being created, can edit freely
|
||||
|
||||
**SCHEDULED** — Queued for future send, can cancel
|
||||
|
||||
**SENDING** — Currently delivering, cannot stop
|
||||
|
||||
**SENT** — Completed successfully
|
||||
|
||||
**CANCELLED** — Scheduled campaign was cancelled
|
||||
|
||||
## Sending campaigns
|
||||
|
||||
### Send immediately
|
||||
|
||||
```bash
|
||||
curl -X POST {{API_URL}}/campaigns/campaign_id/send \
|
||||
-H "Authorization: Bearer sk_your_secret_key"
|
||||
```
|
||||
|
||||
Status changes to SENDING, emails deliver within minutes.
|
||||
|
||||
### Schedule for later
|
||||
|
||||
```bash
|
||||
curl -X POST {{API_URL}}/campaigns/campaign_id/send \
|
||||
-H "Authorization: Bearer sk_your_secret_key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"scheduledAt": "2024-03-20T10:00:00Z"
|
||||
}'
|
||||
```
|
||||
|
||||
Status changes to SCHEDULED. Campaign sends at the specified time.
|
||||
|
||||
### Cancel scheduled campaign
|
||||
|
||||
```bash
|
||||
curl -X POST {{API_URL}}/campaigns/campaign_id/cancel \
|
||||
-H "Authorization: Bearer sk_your_secret_key"
|
||||
```
|
||||
|
||||
Only works if status is SCHEDULED.
|
||||
|
||||
## Testing campaigns
|
||||
|
||||
Send a test email before broadcasting:
|
||||
|
||||
```bash
|
||||
curl -X POST {{API_URL}}/campaigns/campaign_id/test \
|
||||
-H "Authorization: Bearer sk_your_secret_key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"email": "[email protected]"
|
||||
}'
|
||||
```
|
||||
|
||||
This sends to the test email without affecting campaign status.
|
||||
|
||||
## Campaign analytics
|
||||
|
||||
View campaign performance:
|
||||
|
||||
```bash
|
||||
curl -X GET {{API_URL}}/campaigns/campaign_id/stats \
|
||||
-H "Authorization: Bearer sk_your_secret_key"
|
||||
```
|
||||
|
||||
Returns:
|
||||
|
||||
```json
|
||||
{
|
||||
"totalRecipients": 5000,
|
||||
"sentCount": 5000,
|
||||
"deliveredCount": 4980,
|
||||
"openedCount": 2100,
|
||||
"clickedCount": 450,
|
||||
"bouncedCount": 20,
|
||||
"openRate": 0.42,
|
||||
"clickRate": 0.09
|
||||
}
|
||||
```
|
||||
|
||||
Metrics update in real-time as recipients engage.
|
||||
|
||||
## Managing campaigns
|
||||
|
||||
### List campaigns
|
||||
|
||||
```bash
|
||||
curl -X GET {{API_URL}}/campaigns \
|
||||
-H "Authorization: Bearer sk_your_secret_key"
|
||||
```
|
||||
|
||||
Filter by status:
|
||||
|
||||
```bash
|
||||
curl -X GET "{{API_URL}}/campaigns?status=SENT" \
|
||||
-H "Authorization: Bearer sk_your_secret_key"
|
||||
```
|
||||
|
||||
### Get campaign details
|
||||
|
||||
```bash
|
||||
curl -X GET {{API_URL}}/campaigns/campaign_id \
|
||||
-H "Authorization: Bearer sk_your_secret_key"
|
||||
```
|
||||
|
||||
### Update draft campaign
|
||||
|
||||
```bash
|
||||
curl -X PATCH {{API_URL}}/campaigns/campaign_id \
|
||||
-H "Authorization: Bearer sk_your_secret_key" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"name": "Updated name",
|
||||
"subject": "New subject line"
|
||||
}'
|
||||
```
|
||||
|
||||
Only works for DRAFT campaigns.
|
||||
|
||||
### Duplicate campaign
|
||||
|
||||
```bash
|
||||
curl -X POST {{API_URL}}/campaigns/campaign_id/duplicate \
|
||||
-H "Authorization: Bearer sk_your_secret_key"
|
||||
```
|
||||
|
||||
Creates a new draft campaign with the same content.
|
||||
|
||||
### Delete campaign
|
||||
|
||||
```bash
|
||||
curl -X DELETE {{API_URL}}/campaigns/campaign_id \
|
||||
-H "Authorization: Bearer sk_your_secret_key"
|
||||
```
|
||||
|
||||
Can only delete DRAFT or CANCELLED campaigns.
|
||||
|
||||
## Next Steps
|
||||
|
||||
- [Build automated workflows](/guides/workflows)
|
||||
- [Create dynamic segments](/guides/segments)
|
||||
- [Track campaign analytics](/guides/analytics)
|
||||
- [Set up custom domains](/guides/custom-domains)
|
||||
Reference in New Issue
Block a user