Campaigns
Campaigns in Luella represent a complete outreach strategy that combines a set of sequences (including messaging, wait times, and configurations), a targeted list of contacts, and specific sending schedules. Each campaign ensures that the right messages are sent to the right people at the right time, following the configured logic of the selected sequences.
The campaign model
The campaign model defines metadata, status, ownership, performance metrics, and automation settings for running targeted outreach campaigns.
Properties
- Name
campaignId
- Type
- string
- Description
Unique identifier for the campaign.
- Name
workspaceId
- Type
- string
- Description
Workspace the campaign belongs to.
- Name
emoji
- Type
- string
- Description
Optional emoji tag for visual identification.
- Name
name
- Type
- string
- Description
Name of the campaign.
- Name
description
- Type
- string
- Description
Optional description or context about the campaign.
- Name
creator
- Type
- string
- Description
User who originally created the campaign.
- Name
owner
- Type
- string
- Description
User currently responsible for the campaign.
- Name
status
- Type
- string
- Description
Current campaign status (e.g., Draft, Active, Paused, Completed).
- Name
metadata
- Type
- object
- Description
Campaign configuration settings such as daily limits, provider matching, and open tracking.
- Name
sentCount
- Type
- number
- Description
Number of messages sent so far.
- Name
replyCount
- Type
- number
- Description
Number of replies received.
- Name
openCount
- Type
- number
- Description
Number of opens tracked.
- Name
createdAt
- Type
- timestamp (ISO string)
- Description
Time the campaign was created.
- Name
lastUpdatedAt
- Type
- timestamp (ISO string)
- Description
Time the campaign was last updated.
List all campaigns
Retrieve a list of campaigns filtered by sequence, schedule, owner, or status.
Required attributes
- Name
userId
- Type
- string
- Description
User requesting the campaign list.
- Name
workspaceId
- Type
- string
- Description
Workspace to list campaigns from.
Optional attributes
- Name
sequenceId
- Type
- string
- Description
Filter campaigns by sequence ID.
- Name
scheduleId
- Type
- string
- Description
Filter campaigns by schedule ID.
- Name
status
- Type
- string
- Description
Filter by campaign status.
- Name
creator
- Type
- string
- Description
Filter by creator ID.
- Name
owner
- Type
- string
- Description
Filter by current owner.
- Name
sortOrder
- Type
- string
- Description
Sort results (Ascending or Descending).
- Name
maxItems
- Type
- number
- Description
Maximum campaigns to return.
- Name
nextToken
- Type
- number
- Description
Pagination token to retrieve next set of campaigns.
Request
{
"userId": "user_123",
"workspaceId": "workspace_456",
"status": "Active",
"maxItems": 10
}
Response
{
"campaigns": [
{
"campaignId": "camp_001",
"owner": "user_123",
"status": "Active",
"emoji": "๐",
"name": "April Outreach",
"sentCount": 100,
"replyCount": 23,
"openCount": 70,
"createdAt": "2024-04-01T00:00:00.000Z"
}
],
"nextToken": null
}
Create a new campaign
Create a new campaign with a name, optional emoji, description, and owner.
Required attributes
- Name
userId
- Type
- string
- Description
User creating the campaign.
- Name
workspaceId
- Type
- string
- Description
Workspace in which the campaign is created.
- Name
name
- Type
- string
- Description
Name of the campaign.
Optional attributes
- Name
emoji
- Type
- string
- Description
Optional emoji label for campaign.
- Name
description
- Type
- string
- Description
Short description of the campaign.
- Name
owner
- Type
- string
- Description
Optional owner ID of the campaign.
Request
{
"userId": "user_123",
"workspaceId": "workspace_456",
"name": "Cold Outreach Q2",
"emoji": "๐ฏ",
"description": "Targeting early-stage startups",
"owner": "user_123"
}
Response
{
"campaignId": "camp_001"
}
Get a campaign
Retrieve full details and metadata of a campaign using its unique ID.
Required attributes
- Name
userId
- Type
- string
- Description
ID of the requesting user.
- Name
workspaceId
- Type
- string
- Description
Workspace that owns the campaign.
- Name
campaignId
- Type
- string
- Description
The campaign ID to retrieve.
Request
{
"userId": "user_123",
"workspaceId": "workspace_456",
"campaignId": "camp_001"
}
Response
{
"workspaceId": "workspace_456",
"campaignId": "camp_001",
"emoji": "๐ฏ",
"name": "Cold Outreach Q2",
"description": "Targeting early-stage startups",
"creator": "user_789",
"owner": "user_123",
"status": "Active",
"metadata": {
"mailboxes": ["john@luella.ai", "john.doe@luella.ai"],
"openTracking": true,
"dailyLimit": 100,
"providerMatching": true,
"stopOnAutoReply": true,
"ccAddresses": [],
"bccAddresses": [],
"autoOptimize": false
},
"sentCount": 250,
"replyCount": 42,
"openCount": 180,
"createdAt": "2024-04-01T00:00:00.000Z",
"lastUpdatedAt": "2024-04-05T08:30:00.000Z"
}
Update campaign metadata
Update metadata settings such as mailboxes, limits, tracking, and automation for a specific campaign.
Required attributes
- Name
userId
- Type
- string
- Description
User making the update.
- Name
workspaceId
- Type
- string
- Description
Workspace the campaign belongs to.
- Name
campaignId
- Type
- string
- Description
ID of the campaign being updated.
Optional attributes
- Name
mailboxes
- Type
- string[]
- Description
Array of email addresses to be used in the campaign.
- Name
openTracking
- Type
- boolean
- Description
Enable open tracking for this campaign.
- Name
dailyLimit
- Type
- number
- Description
Max number of messages to send per day.
- Name
providerMatching
- Type
- boolean
- Description
Match sending domain with recipient domain where possible.
- Name
stopOnAutoReply
- Type
- boolean
- Description
Stop sending if an auto-reply is detected.
- Name
ccAddresses
- Type
- string[]
- Description
Email addresses to CC in each message.
- Name
bccAddresses
- Type
- string[]
- Description
Email addresses to BCC in each message.
- Name
autoOptimize
- Type
- boolean
- Description
Enable dynamic optimization of send order and timing.
Request
{
"userId": "user_123",
"workspaceId": "workspace_456",
"campaignId": "camp_001",
"mailboxes": ["john.doe@luella.ai"], // This email address should already be onboarded to Luella.
"openTracking": true,
"dailyLimit": 75,
"providerMatching": true,
"autoOptimize": false
}
Response
{
"campaignId": "camp_001"
}
Update a campaign
Update the core attributes of a campaign such as name, description, owner, emoji, and status.
Required attributes
- Name
userId
- Type
- string
- Description
User making the request.
- Name
workspaceId
- Type
- string
- Description
Workspace the campaign belongs to.
- Name
campaignId
- Type
- string
- Description
ID of the campaign being updated.
- Name
name
- Type
- string
- Description
Updated campaign name.
- Name
status
- Type
- string
- Description
New campaign status (e.g., Draft, Active, Paused, Completed).
Optional attributes
- Name
emoji
- Type
- string
- Description
Updated emoji tag.
- Name
description
- Type
- string
- Description
Updated description text.
- Name
owner
- Type
- string
- Description
New owner ID.
Request
{
"userId": "user_123",
"workspaceId": "workspace_456",
"campaignId": "camp_001",
"name": "Updated Campaign Name",
"status": "Paused",
"emoji": "โ๏ธ",
"description": "Updated description",
"owner": "user_456"
}
Response
{
"campaignId": "camp_001"
}
Delete a campaign
Permanently deletes a campaign and all its related metadata.
Required attributes
- Name
userId
- Type
- string
- Description
User initiating the deletion.
- Name
workspaceId
- Type
- string
- Description
Workspace the campaign belongs to.
- Name
campaignId
- Type
- string
- Description
ID of the campaign to delete.
Request
{
"userId": "user_123",
"workspaceId": "workspace_456",
"campaignId": "camp_001"
}
Response
{}