Learn how to list, update, delete, and manage your campaigns effectively with the Campaign SDK.
// List all campaigns
const campaigns = await campaignClient.listCampaigns();
console.log(`Found ${campaigns.length} campaigns`);
campaigns.forEach(campaign => {
console.log(`${campaign.name} - ${campaign.status}`);
});
// Filter by status
const activeCampaigns = await campaignClient.listCampaigns({
status: "active"
});
// Filter by industry
const ecommerceCampaigns = await campaignClient.listCampaigns({
industry: "ecommerce"
});
// Multiple filters
const filteredCampaigns = await campaignClient.listCampaigns({
status: "active",
industry: "retail",
tags: ["holiday", "promotion"]
});
// Get campaign by ID
const campaignId = "camp_1234567890";
const campaign = await campaignClient.getCampaign(campaignId);
console.log("Campaign details:", {
id: campaign.id,
name: campaign.name,
status: campaign.status,
createdAt: campaign.createdAt,
updatedAt: campaign.updatedAt,
budget: campaign.budget,
industry: campaign.industry,
tags: campaign.tags
});
// Update campaign details
const updatedCampaign = await campaignClient.updateCampaign(campaignId, {
name: "Updated Campaign Name",
description: "New campaign description",
budget: 75000,
endDate: "2024-12-31T23:59:59Z",
tags: ["updated", "extended", "promotion"]
});
console.log("Campaign updated:", updatedCampaign.name);
// Activate a campaign
await campaignClient.updateCampaignStatus(campaignId, "active");
// Pause a campaign
await campaignClient.updateCampaignStatus(campaignId, "paused");
// Complete a campaign
await campaignClient.updateCampaignStatus(campaignId, "completed");
// Get updated campaign
const updatedCampaign = await campaignClient.getCampaign(campaignId);
console.log("New status:", updatedCampaign.status);
// Duplicate with auto-generated name
const duplicatedCampaign = await campaignClient.duplicateCampaign(campaignId);
// Duplicate with custom name
const namedDuplicate = await campaignClient.duplicateCampaign(
campaignId,
"Winter Sale 2024 - Copy"
);
console.log("Duplicated campaign:", {
original: campaignId,
duplicate: duplicatedCampaign.id,
name: duplicatedCampaign.name
});
// Basic execution
const execution = await campaignClient.executeCampaign(campaignId);
// Execute with trigger data
const executionWithData = await campaignClient.executeCampaign(campaignId, {
userId: "user_123",
location: { lat: 40.7128, lng: -74.0060 },
eventType: "store_visit"
});
console.log("Campaign executed:", {
campaignId: execution.campaignId,
executionId: execution.executionId,
timestamp: execution.timestamp
});
// Delete a campaign
try {
await campaignClient.deleteCampaign(campaignId);
console.log("Campaign deleted successfully");
} catch (error) {
console.error("Failed to delete campaign:", error.message);
}
// Verify deletion
try {
const deletedCampaign = await campaignClient.getCampaign(campaignId);
} catch (error) {
console.log("Campaign no longer exists");
}
Warning: Deleting a campaign is permanent and cannot be undone. Consider pausing the campaign instead if you may need it later.
All campaigns are automatically associated with your team ID. You can only access campaigns that belong to your team, ensuring data security and privacy.
// Initialize client with team ID
const campaignClient = createCampaignClient({
clientId: "your-client-id",
secretKey: "your-secret-key",
teamId: "team_xyz123" // All operations scoped to this team
});
// All operations are automatically team-scoped
const teamCampaigns = await campaignClient.listCampaigns();
// Only returns campaigns for team_xyz123
try {
const campaign = await campaignClient.getCampaign(campaignId);
console.log("Campaign found:", campaign.name);
} catch (error) {
if (error.status === 404) {
console.log("Campaign not found");
} else if (error.status === 403) {
console.log("Access denied - check team permissions");
} else if (error.status === 401) {
console.log("Authentication failed - check credentials");
} else {
console.error("Unexpected error:", error.message);
}
}
// Batch operations with error handling
const campaignIds = ["camp_1", "camp_2", "camp_3"];
const results = await Promise.allSettled(
campaignIds.map(id => campaignClient.getCampaign(id))
);
results.forEach((result, index) => {
if (result.status === "fulfilled") {
console.log(`Campaign ${index + 1}:`, result.value.name);
} else {
console.error(`Campaign ${index + 1} failed:`, result.reason.message);
}
});