
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
@23blocks/block-campaigns
Advanced tools
Campaigns block for 23blocks SDK - marketing campaigns, media, landing pages, and audience management
Campaigns block for the 23blocks SDK - marketing campaigns, media, landing pages, and audiences.
npm install @23blocks/block-campaigns @23blocks/transport-http
This package provides marketing campaign functionality including:
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',
});
// List active campaigns
const { data: campaignList } = await campaigns.campaigns.list({
status: 'active',
limit: 20,
});
campaignList.forEach((campaign) => {
console.log(campaign.name, campaign.startDate, campaign.endDate);
});
// List campaigns
const { data: campaignList } = await campaigns.campaigns.list({
limit: 20,
status: 'active',
});
// Get campaign by ID
const campaign = await campaigns.campaigns.get('campaign-id');
// Create campaign
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',
});
// Update campaign
await campaigns.campaigns.update('campaign-id', {
status: 'active',
budget: 15000,
});
// Delete campaign
await campaigns.campaigns.delete('campaign-id');
// Get campaign results
const results = await campaigns.campaigns.getResults('campaign-id');
console.log(results.impressions, results.clicks, results.conversions);
// List media for campaign
const { data: mediaList } = await campaigns.campaignMedia.list({
campaignId: 'campaign-id',
});
// Get media by ID
const media = await campaigns.campaignMedia.get('media-id');
// Create campaign media
const newMedia = await campaigns.campaignMedia.create({
campaignId: 'campaign-id',
name: 'Banner Ad',
type: 'image',
fileId: 'file-id',
placement: 'homepage_banner',
status: 'active',
});
// Update media
await campaigns.campaignMedia.update('media-id', {
status: 'paused',
});
// Delete media
await campaigns.campaignMedia.delete('media-id');
// Get media results
const results = await campaigns.campaignMedia.getResults('media-id');
console.log(results.impressions, results.clicks, results.ctr);
// List landing pages
const { data: pages } = await campaigns.landingPages.list({
campaignId: 'campaign-id',
});
// Get landing page by ID
const page = await campaigns.landingPages.get('page-id');
// Create landing page
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',
});
// Update landing page
await campaigns.landingPages.update('page-id', {
content: '<h1>Updated Content</h1>...',
});
// Delete landing page
await campaigns.landingPages.delete('page-id');
// List audiences
const { data: audiences } = await campaigns.audiences.list();
// Get audience by ID
const audience = await campaigns.audiences.get('audience-id');
// Create audience
const newAudience = await campaigns.audiences.create({
name: 'Premium Customers',
description: 'Customers with lifetime value > $1000',
criteria: {
minLifetimeValue: 1000,
segments: ['active', 'returning'],
},
});
// Update audience
await campaigns.audiences.update('audience-id', {
criteria: {
minLifetimeValue: 1500,
},
});
// Delete audience
await campaigns.audiences.delete('audience-id');
// Get audience members
const { data: members } = await campaigns.audiences.getMembers('audience-id', {
limit: 100,
});
// Add member to audience
await campaigns.audiences.addMember('audience-id', {
userId: 'user-id',
});
// Remove member from audience
await campaigns.audiences.removeMember('audience-id', 'member-id');
import type {
Campaign,
CampaignResults,
CampaignMedia,
CampaignMediaResults,
LandingPage,
Audience,
AudienceMember,
CreateCampaignRequest,
CreateCampaignMediaRequest,
CreateLandingPageRequest,
CreateAudienceRequest,
} from '@23blocks/block-campaigns';
| Property | Type | Description |
|---|---|---|
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 |
| Property | Type | Description |
|---|---|---|
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 |
@23blocks/angular - Angular integration@23blocks/react - React integration@23blocks/sdk - Full SDK packageMIT - Copyright (c) 2024 23blocks
FAQs
Campaigns block for 23blocks SDK - marketing campaigns, media, landing pages, and audience management
The npm package @23blocks/block-campaigns receives a total of 46 weekly downloads. As such, @23blocks/block-campaigns popularity was classified as not popular.
We found that @23blocks/block-campaigns demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.