Campaigns
Organise sequences and templates into campaigns for coordinated email programmes.
Campaigns are an organisational layer that groups related sequences and templates together. They provide a high-level view of a coordinated email programme — such as a product launch, seasonal promotion, or onboarding funnel.
Creating a campaign
Create a campaign with a name and optional description:
const campaign = await kraiter.campaigns.create({
name: 'Q1 Product Launch',
description: 'Email programme for the January product launch, including announcement, follow-ups, and re-engagement.',
});curl -X POST https://api.kraiter.com/api/campaigns \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Q1 Product Launch",
"description": "Email programme for the January product launch."
}'Adding sequences to a campaign
Associate sequences with a campaign to group them logically:
await kraiter.campaigns.addSequence('Q1 Product Launch', 'launch-announcement');
await kraiter.campaigns.addSequence('Q1 Product Launch', 'launch-follow-up');
await kraiter.campaigns.addSequence('Q1 Product Launch', 'launch-re-engagement');A sequence can belong to multiple campaigns. Adding a sequence to a campaign does not change the sequence's behaviour — it is purely organisational.
Adding templates to a campaign
Similarly, associate templates with a campaign:
await kraiter.campaigns.addTemplate('Q1 Product Launch', 'launch-hero-email');
await kraiter.campaigns.addTemplate('Q1 Product Launch', 'launch-reminder');Viewing campaign contents
Retrieve the full campaign with its associated sequences and templates:
const campaign = await kraiter.campaigns.get('Q1 Product Launch');
console.log(campaign.sequenceIds); // IDs of associated sequences
console.log(campaign.templateIds); // IDs of associated templatescurl https://api.kraiter.com/api/campaigns/Q1%20Product%20Launch \
-H "Authorization: Bearer YOUR_API_KEY"Removing sequences and templates
Remove the association between a sequence or template and a campaign:
await kraiter.campaigns.removeSequence('Q1 Product Launch', 'launch-re-engagement');
await kraiter.campaigns.removeTemplate('Q1 Product Launch', 'launch-reminder');Removing a sequence or template from a campaign does not delete the sequence or template itself — it only removes the association.
Campaign lifecycle
Campaigns follow a status lifecycle:
| Status | Description |
|---|---|
draft | Newly created. Not yet active. |
active | Campaign is live. Associated sequences can be running. |
paused | Campaign is temporarily paused. |
completed | Campaign has finished. All sequences have completed. |
archived | Permanently archived for historical reference. |
Set the campaign status with update:
await kraiter.campaigns.update('Q1 Product Launch', { status: 'active' });
await kraiter.campaigns.update('Q1 Product Launch', { status: 'paused' });
await kraiter.campaigns.update('Q1 Product Launch', { status: 'completed' });
await kraiter.campaigns.update('Q1 Product Launch', { status: 'archived' });Note that changing a campaign's status does not automatically change the status of its sequences. You manage sequence statuses independently. The campaign status serves as a coordination signal and organisational indicator.
Listing campaigns
List all campaigns with pagination:
const { items, nextCursor } = await kraiter.campaigns.list({
limit: 20,
});curl "https://api.kraiter.com/api/campaigns?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"Updating a campaign
Update the campaign name or description:
await kraiter.campaigns.update('Q1 Product Launch', {
description: 'Updated programme for the January launch with additional re-engagement flow.',
});Deleting a campaign
Delete a campaign. This removes the campaign and all its associations but does not delete the underlying sequences or templates.
await kraiter.campaigns.delete('Q1 Product Launch');curl -X DELETE https://api.kraiter.com/api/campaigns/Q1%20Product%20Launch \
-H "Authorization: Bearer YOUR_API_KEY"Best practices
- Use campaigns for coordination. Group related sequences and templates so your team can see the full picture of a programme.
- Name campaigns clearly. Include the time period or initiative name (e.g. "Q1 Product Launch", "Summer Sale 2025", "Onboarding V2").
- Archive completed campaigns. Keep your campaign list clean by archiving campaigns that have finished running.
- One sequence per goal. Rather than creating a single complex sequence, break workflows into focused sequences and group them in a campaign.