import { clearObj } from "../../common/utils.mjs";
import mailwizz from "../../mailwizz.app.mjs";
export default {
key: "mailwizz-create-campaign",
name: "Create Campaign",
version: "0.0.1",
description: "Create a new campaign. [See the docs here](https://api-docs.mailwizz.com/?php#create-a-campaign)",
type: "action",
props: {
mailwizz,
name: {
type: "string",
label: "Name",
description: "Campaign name.",
},
type: {
type: "string",
label: "Type",
description: "Campaign type. Default is regular.",
options: [
"autoresponder",
"regular",
],
optional: true,
},
fromName: {
type: "string",
label: "From Name",
description: "The campaign from name.",
},
fromEmail: {
type: "string",
label: "From Email",
description: "The campaign from email address.",
},
subject: {
type: "string",
label: "Subject",
description: "The campaign subject.",
optional: true,
},
toName: {
type: "string",
label: "To Name",
description: "The subscriber for which we record the bounce.",
},
replyTo: {
type: "string",
label: "Reply To",
description: "RThe camapaign reply to email address.",
},
sendAt: {
type: "string",
label: "Send At",
description: "This will use the timezone which customer selected.",
},
listId: {
propDefinition: [
mailwizz,
"listId",
],
},
segmentId: {
propDefinition: [
mailwizz,
"segmentId",
( { listId } ) => ( {
listId,
} ),
],
optional: true,
},
templateId: {
propDefinition: [
mailwizz,
"templateId",
],
},
inlineCSS: {
type: "boolean",
label: "Inline CSS",
description: "Accept inline css",
optional: true,
},
plainText: {
type: "string",
label: "Plain Text",
description: "Do not send to autogenerate as default.",
optional: true,
},
autoPlainText: {
type: "boolean",
label: "Auto Plain Text",
description: "Generate plain text template.",
optional: true,
},
urlTracking: {
type: "boolean",
label: "URL Tracking",
description: "Enable/Disable url tracking.",
optional: true,
},
jsonFeed: {
type: "boolean",
label: "JSON Feed",
description: "Enable/Disable JSON feed.",
optional: true,
},
xmlFeed: {
type: "boolean",
label: "XML Feed",
description: "Enable/Disable XML feed.",
optional: true,
},
plainTextEmail: {
type: "boolean",
label: "Plain Text Email",
description: "Enable/Disable the plain text email.",
optional: true,
},
emailStats: {
type: "string",
label: "Email Stats",
description: "A valid email address where the stats will be sent.",
optional: true,
},
autoresponderEvent: {
type: "string",
label: "Autoresponder Event",
description: "The event that is sent after subscribe or after opening the campaign.",
options: [
"AFTER-SUBSCRIBE",
"AFTER-CAMPAIGN-OPEN",
],
optional: true,
},
autoresponderTimeUnit: {
type: "string",
label: "Autoresponder Time Unit",
description: "The unit that the autoresponder will be based on.",
options: [
"minute",
"hour",
"day",
"week",
"month",
"year",
],
optional: true,
},
autoresponderTimeValue: {
type: "integer",
label: "Autoresponder Time Value",
description: "The unit time value.",
optional: true,
},
autoresponderOpenCampaignId: {
propDefinition: [
mailwizz,
"campaignId",
],
label: "Autoresponder Open Campaign Id",
description: "Id of the camapign, only if event is AFTER-CAMPAIGN-OPEN.",
optional: true,
},
cronjob: {
type: "string",
label: "Cron Job",
description: "If this campaign is advanced recurring, you can set a cron job style frequency.",
optional: true,
},
cronjobEnabled: {
type: "boolean",
label: "Cron Job Enabled",
description: "Enable/Disable cron job frequency.",
optional: true,
},
},
async run ( { $ } ) {
const {
mailwizz,
fromName,
fromEmail,
toName,
replyTo,
sendAt,
listId,
segmentId,
templateId,
inlineCSS,
plainText,
autoPlainText,
urlTracking,
jsonFeed,
xmlFeed,
plainTextEmail,
emailStats,
autoresponderEvent,
autoresponderTimeUnit,
autoresponderTimeValue,
autoresponderOpenCampaignId,
cronjobEnabled,
...data
} = this;
const response = await mailwizz.createCampaign( clearObj( {
data: {
campaign: {
...data,
from_name: fromName,
from_email: fromEmail,
to_name: toName,
reply_to: replyTo,
send_at: sendAt,
list_uid: listId,
segment_uid: segmentId,
template: {
template_uid: templateId,
inline_css: inlineCSS,
plain_text: plainText,
auto_plain_text: autoPlainText,
},
options: {
url_tracking: urlTracking || "no",
json_feed: jsonFeed,
xml_feed: xmlFeed,
plain_text_email: plainTextEmail,
email_stats: emailStats,
autoresponder_event: autoresponderEvent,
autoresponder_time_unit: autoresponderTimeUnit,
autoresponder_time_value: autoresponderTimeValue,
autoresponder_open_campaign_id: autoresponderOpenCampaignId,
cronjob_enabled: cronjobEnabled,
},
},
},
} ) );
$.export( "$summary", `Campaign with id ${response.campaign_uid} was successfully created!` );
return response;
},
};