본문으로 건너뛰기

캠페인

소식 받기에 동의한 사람들에게 보내는 이메일, 푸시 알림, 문자 메시지입니다.

Writing an email

Campaigns sits under Engage, one grid of every marketing email with its channel, status, recipients and when it went. New campaign names it, picks its language and starts it blank, from one of six starters (newsletter, announcement, event, welcome, re-engagement, product update) written in that language, or from one of the project’s own templates. A campaign opens on its own page. Edit lays the versions and their blocks on the left, the saved version as the server renders it for sending in the middle, and the chosen block’s settings on the right. The blocks are logo, heading, text, image, button, two columns, divider, spacer, social links, smart content, HTML and the footer every marketing email carries with the postal address, the unsubscribe link and the preferences link. Smart content shows the first version whose cohort or lifecycle stage matches the person, else its fallback. HTML blocks come with Growth and up and lose scripts, forms and outside styles when saved. Write {{ person.first_name | fallback: "there" }} to personalise; a token without a fallback is refused. Save as template keeps the content for the next email, and the project’s logo, colours and font come from the brand kit in Email settings, where button text and body text must measure at least 4.5:1.

Who it goes to

Recipients names up to twenty cohorts to send to and twenty to leave out, and the subscription type it goes out under, which must be a marketing email type. Its estimate counts the cohorts’ people before subscriptions narrow them. When sending starts the list is fixed: only marketing contacts subscribed to the type, with an address, not suppressed and under the project’s weekly frequency cap receive it, each address once, and every person left out is counted by reason on the report. Before it sends lists everything still in the way: unfinished content, no verified sending domain, a bad sender, no subscription type, no cohort, no postal address, paused sending, a test outside its limits, a missing send time, a feature outside the plan, or a missing approval.

Testing versions

An email holds up to five versions, each with its own subject, preview line, sender name and blocks. On Test, an A/B test sends each version to a share of the audience (10% to 50% each) for a window of 1 to 72 hours, measured by opens or clicks; the leader is called early once its lead holds at 95%, and the copies held back go out on the winner. An adaptive test sends from the start and shifts the audience toward the version drawing more clicks, every version keeping at least 5%. A/B and adaptive tests come with Scale and up.

Sending, approval and the report

Settings sets the sender on a verified domain of the company, the reply-to address and the language, and when it goes: as soon as it is scheduled, at a set time, at a wall-clock time in each person’s own time zone, or at each person’s best hour within 24 hours of a set time (send time optimisation, Scale and up). Send test sends every version or one, personalised as a person, to the signed-in member’s own address and no one else. When the project asks for approval (Scale and up), Request approval sends the draft to a member who may approve; the author cannot approve their own email, Send back returns it with a note, and saving an approved email clears its approval. Schedule checks everything once more; a scheduled email can be unscheduled, a sending one paused and resumed, and any of them cancelled, which skips the copies not yet sent. Sending keeps to the project’s hourly rate, holds a copy that would land in a person’s quiet hours until they end, and stops while the company is over its messages allowance. Report shows sent, delivered, opened, clicked, unsubscribed and marked as spam, each version beside the others with the winner, and the links people clicked. The phone lists campaigns with their numbers, opens a report and approves or sends back an email.

Permissions, API and agents

Reading campaigns needs prodantix.marketing_emails.read; writing them, sending tests and asking for approval need prodantix.marketing_emails.manage; approving needs prodantix.marketing_emails.approve; scheduling, pausing, resuming and cancelling need prodantix.marketing_emails.send; the hourly rate, quiet hours, frequency cap, approvals and time zone are sending settings under prodantix.email.manage. Every surface is served over REST under /v1/projects/{projectId}/marketing-emails, over GraphQL (marketingEmails, marketingEmail, marketingEmailReadiness, marketingEmailPreview, marketingEmailReport, marketingEmailAudience, emailTemplates, emailBrandKit, emailSendingSettings, createMarketingEmail, saveMarketingEmail, sendMarketingEmailTest, requestMarketingEmailApproval, approveMarketingEmail, rejectMarketingEmail, scheduleMarketingEmail, unscheduleMarketingEmail, pauseMarketingEmail, resumeMarketingEmail, cancelMarketingEmail, archiveMarketingEmail, saveEmailTemplate, archiveEmailTemplate, saveEmailBrandKit, saveEmailSendingSettings, marketingEmailChanges), as marketingEmailChange frames on the company’s Socket.IO room, and to agents through the MCP tools prodantix.marketing_emails.list, prodantix.marketing_emails.get, prodantix.marketing_emails.readiness, prodantix.marketing_emails.preview, prodantix.marketing_emails.report, prodantix.marketing_emails.audience, prodantix.marketing_emails.templates, prodantix.marketing_emails.brand_kit, prodantix.marketing_emails.sending_settings, prodantix.marketing_emails.create, prodantix.marketing_emails.save, prodantix.marketing_emails.send_test, prodantix.marketing_emails.request_approval, prodantix.marketing_emails.approve, prodantix.marketing_emails.reject, prodantix.marketing_emails.schedule, prodantix.marketing_emails.unschedule, prodantix.marketing_emails.pause, prodantix.marketing_emails.resume, prodantix.marketing_emails.cancel, prodantix.marketing_emails.archive, prodantix.marketing_emails.save_template, prodantix.marketing_emails.archive_template, prodantix.marketing_emails.save_brand_kit, prodantix.marketing_emails.save_sending_settings.