@23blocks/block-campaigns
Campaigns block for the 23blocks SDK - marketing campaigns, media, landing pages, and audiences.

Installation
npm install @23blocks/block-campaigns @23blocks/transport-http
Overview
This package provides marketing campaign functionality including:
- Campaigns - Campaign management and tracking
- Campaign Media - Media assets for campaigns
- Landing Pages - Landing page management
- Audiences - Target audience management
Quick Start
import { createHttpTransport } from '@23blocks/transport-http';
import { createCampaignsBlock } from '@23blocks/block-campaigns';
const transport = createHttpTransport({
baseUrl: 'https://api.yourapp.com',
headers: () => {
const token = localStorage.getItem('access_token');
return token ? { Authorization: `Bearer ${token}` } : {};
},
});
const campaigns = createCampaignsBlock(transport, {
apiKey: 'your-api-key',
});
const { data: campaignList } = await campaigns.campaigns.list({
status: 'active',
limit: 20,
});
campaignList.forEach((campaign) => {
console.log(campaign.name, campaign.startDate, campaign.endDate);
});
Services
campaigns - Campaign Management
const { data: campaignList } = await campaigns.campaigns.list({
limit: 20,
status: 'active',
});
const campaign = await campaigns.campaigns.get('campaign-id');
const newCampaign = await campaigns.campaigns.create({
name: 'Summer Sale 2024',
description: 'Annual summer promotion',
type: 'promotion',
startDate: '2024-06-01',
endDate: '2024-08-31',
budget: 10000,
status: 'draft',
});
await campaigns.campaigns.update('campaign-id', {
status: 'active',
budget: 15000,
});
await campaigns.campaigns.delete('campaign-id');
const results = await campaigns.campaigns.getResults('campaign-id');
console.log(results.impressions, results.clicks, results.conversions);
campaignMedia - Media Management
const { data: mediaList } = await campaigns.campaignMedia.list({
campaignId: 'campaign-id',
});
const media = await campaigns.campaignMedia.get('media-id');
const newMedia = await campaigns.campaignMedia.create({
campaignId: 'campaign-id',
name: 'Banner Ad',
type: 'image',
fileId: 'file-id',
placement: 'homepage_banner',
status: 'active',
});
await campaigns.campaignMedia.update('media-id', {
status: 'paused',
});
await campaigns.campaignMedia.delete('media-id');
const results = await campaigns.campaignMedia.getResults('media-id');
console.log(results.impressions, results.clicks, results.ctr);
landingPages - Landing Page Management
const { data: pages } = await campaigns.landingPages.list({
campaignId: 'campaign-id',
});
const page = await campaigns.landingPages.get('page-id');
const newPage = await campaigns.landingPages.create({
campaignId: 'campaign-id',
name: 'Summer Sale Landing',
slug: 'summer-sale-2024',
title: 'Summer Sale - Up to 50% Off',
content: '<h1>Summer Sale</h1>...',
status: 'published',
});
await campaigns.landingPages.update('page-id', {
content: '<h1>Updated Content</h1>...',
});
await campaigns.landingPages.delete('page-id');
audiences - Audience Management
const { data: audiences } = await campaigns.audiences.list();
const audience = await campaigns.audiences.get('audience-id');
const newAudience = await campaigns.audiences.create({
name: 'Premium Customers',
description: 'Customers with lifetime value > $1000',
criteria: {
minLifetimeValue: 1000,
segments: ['active', 'returning'],
},
});
await campaigns.audiences.update('audience-id', {
criteria: {
minLifetimeValue: 1500,
},
});
await campaigns.audiences.delete('audience-id');
const { data: members } = await campaigns.audiences.getMembers('audience-id', {
limit: 100,
});
await campaigns.audiences.addMember('audience-id', {
userId: 'user-id',
});
await campaigns.audiences.removeMember('audience-id', 'member-id');
Types
import type {
Campaign,
CampaignResults,
CampaignMedia,
CampaignMediaResults,
LandingPage,
Audience,
AudienceMember,
CreateCampaignRequest,
CreateCampaignMediaRequest,
CreateLandingPageRequest,
CreateAudienceRequest,
} from '@23blocks/block-campaigns';
Campaign
id | string | Campaign ID |
name | string | Campaign name |
description | string | Campaign description |
type | string | Campaign type |
status | string | draft, active, paused, completed |
startDate | Date | Campaign start date |
endDate | Date | Campaign end date |
budget | number | Campaign budget |
CampaignResults
impressions | number | Total impressions |
clicks | number | Total clicks |
conversions | number | Total conversions |
spend | number | Total spend |
revenue | number | Total revenue |
roi | number | Return on investment |
Related Packages
License
MIT - Copyright (c) 2024 23blocks