Campaigns

Plan, launch, and measure marketing initiatives — emails, webinars, events, content and more.

Campaigns

A campaign is any marketing initiative — an email blast, a webinar, a trade show booth, a content download, a paid social ad campaign. Each campaign has a budget, a target audience, a duration, and a measurable outcome (revenue, leads, opportunities).

The 4 campaign statuses

StatusWhat it means
⚪ PlanningBeing designed — audience, budget, content (default)
🟠 In ProgressLive — members are enrolled, and the responses that come back are recorded on them
🟢 CompletedFinished — the run is over; the metrics stay live
🔴 AbortedCancelled before completion

The system auto-moves campaigns from In Progress to Completed the day after their end date — so you don't have to remember.

The 8 campaign types

TypeUse for
Email (default)Newsletters, drip programmes, broadcast emails
WebinarVirtual events with registration and attendance tracking
Trade ShowIn-person booth presence at industry events
ConferenceSpeaking slots, sponsorships
Direct MailPhysical letters, gifts, packages
Social MediaPaid or organic social campaigns
Content MarketingBlog posts, ebooks, whitepapers, gated content
Partner MarketingJoint campaigns with channel partners

And 5 primary channels: Digital · Social · Email · Events · Partner. Pick the channel that best describes how the campaign reaches the audience — it's used by the channel-mix report.

What a campaign record stores

The campaign has no hand-built detail page: the record screen is derived from the object's own field groups, six sections in this order.

SectionWhat is in it
Campaign InformationCampaign code, name, description, type, channel, status
ScheduleStart date, end date
Budget & ROIBudgeted cost, actual cost, expected revenue, actual revenue (rolled up), ROI (calculated)
PerformanceTarget size, the rollup counters, and the response rate (calculated) — see Measuring a campaign
OwnershipCampaign owner
Campaign AssetsLanding page, and whether the campaign is active (collapsed until you open it)

There is no Engagement section, and no open or click column anywhere on the campaign: what it rolls up is enrollments, responses, conversions, and the revenue attributed back to it.

The Campaign Code is auto-generated (e.g., CAMP-000123) so every campaign has a unique short reference for email subject lines and tracking URLs.

Built-in rules

  • End date must be on or after the start date — basic sanity check.
  • Over-budget warning — if actual cost exceeds budgeted cost, a warning shows on the record. Doesn't block saves, but flags the campaign for finance review.

What happens automatically

  • Auto-complete — at 2 AM daily, any In Progress campaign past its end date is marked Completed. The sweep flips the status and only the status — the numbers were already current before it ran.
  • Live metrics — the metric block (sent, responded, converted, ROI) is recomputed as members are enrolled, as members respond, as their leads convert, and as opportunities are attributed to the campaign. A campaign you are running right now reports real numbers; you do not wait for it to finish to read them.
  • ROI calculation — the campaign's actual revenue is the rolled-up sum of related closed-won opportunity amounts. ROI = (actual revenue − actual cost) ÷ actual cost.

Member enrollment is deliberately not on that list: nothing enrolls members when a campaign goes In Progress, and no schedule enrolls them later. It is a button someone presses — see Campaign enrollment flow below.

Campaign enrollment flow

Bulk enrollment is a step you run, not one that happens to you. Open the campaign and click Enroll Members in the record header — the action is offered while the campaign is Planning or In Progress — and the flow opens its Enrollment Criteria screen on that campaign.

You choose the audience on that screen:

  1. Enroll — Leads or Contacts. One run enrolls one side, not both.
  2. The segment on that side — leads by status, contacts by department. Both fields carry a default, so you change the one that matches the side you picked.

The flow then takes everyone eligible in that segment — they have an email address, they are not opted out of email, and a lead must not already be converted — and creates a campaign member per person with status Sent. Anyone already on the campaign is skipped, so running it again tops the campaign up instead of counting a touch twice.

There is no schedule behind this, and the criteria are the reason. They are answered on the screen, and a scheduled run would arrive with nobody to answer them — no campaign, no segment — so enrolling is deliberately something a person does.

For real-time campaigns (e.g., a webinar with a registration form), you can also add members manually from the campaign detail page or via the Add to Campaign action on any lead/contact.

Measuring a campaign

The numbers live on the campaign record itself — the counters and the response rate in Performance, the money and ROI in Budget & ROI. Every one of them is recomputed as members are enrolled or answer, as their leads convert, and as opportunities are attributed to the campaign:

  • Number Sent — every member enrolled in the campaign, whatever their status.
  • Number of Responses — members at Responded or Converted: a member whose lead converted answered too, and the counter says so.
  • Response Rate % — responses ÷ number sent, as a percentage. It is the only rate the campaign carries.
  • Number of Leads — the distinct leads among those members.
  • Converted Leads — how many of those leads have since been converted.
  • Opportunities Created and Won Opportunities — opportunities naming this campaign as their source, and how many of them closed won.
  • Actual Revenue — the sum of those won opportunities' amounts. Open pipeline is not summed anywhere on the campaign; closed-won is the only money it rolls up.
  • ROI % — (actual revenue − actual cost) ÷ actual cost, as a percentage.

A campaign has no open rate, click rate or conversion rate. Its members are Sent, Responded, Converted or Unsubscribed — four values with no order between them, so "the members at or above Opened" is not a question this app can be asked; opens, clicks and bounces are not tracked at all, and Campaign Members explains why. Conversion reaches the campaign as the Converted Leads and Opportunities Created counts, never as a percentage.

Attribution: from campaign to revenue

The link is the Source Campaign lookup on the opportunity. When a sales rep converts a lead that came from a campaign — or manually sets the source campaign on an opportunity — the system credits the revenue back to the campaign.

For deals influenced by multiple campaigns (multi-touch), the convention is to record the last-touch campaign (the one closest to conversion). For full multi-touch attribution, consider extending the model with a campaign-influence join object — see Customization.

Standard list views

Campaigns saves four views (src/marketing/views/campaign.view.ts), and the tab row above the list changes how the same campaigns are drawn, not which campaigns are in them. One tab per view, each labelled with the view's own name:

ViewWhat it shows
All CampaignsThe grid: name (pinned left, and the link into the record), channel, status, start and end date, budgeted cost and expected revenue — the last two with column totals. Ordered by Start Date, earliest first. 25 rows a page.
Campaign ScheduleOne gantt bar per campaign, from start date to end date, titled by name, so overlapping runs line up against one another.
Launch CalendarThe same campaigns on a month calendar, placed on their Start Date and coloured by channel.
Marketing TimelineThe same start-to-end spans on a month scale, grouped by channel and coloured by status.

None of the four filters anything, so every campaign you can see appears in all four and switching tabs only redraws them. There is no saved Active Campaigns, Upcoming Campaigns, Completed This Quarter, Over Budget, By Type or Best ROI: to narrow the list to one status, sort and filter the grid columns yourself. ROI is not among those columns — it is on the campaign record, under Budget & ROI, and in the marketing dashboards.

Sharing — campaigns are public by default

Campaigns are public read-only for the whole organisation. Anyone in sales can see what marketing is running, and use that context in customer conversations. Edit access is reserved for marketing users.

Tips for marketers

  • ✅ Set the expected revenue at launch — it's how finance forecasts the campaign's contribution.
  • ✅ Record actual cost as soon as you know it — over-budget warnings can't help if the field is empty.
  • ✅ Update the campaign status to Completed if you finish early; don't wait for the auto-complete.
  • ✅ Document what worked in the description — future you and future colleagues will thank you.

Tips for sales reps

  • ✅ When a lead arrives, check whether they're in a campaign — it tells you which campaigns they were sent, and how they answered.
  • ✅ Set Source Campaign on opportunities you closed — marketing can't measure ROI without this.

Tips for admins

  • The auto-complete cron (2 AM daily) is configurable. There is no enrollment cron to configure — enrollment is the Enroll Members screen flow, which someone runs from a campaign. See Administration › Automation.
  • To add a new campaign type or channel, edit the campaign object's picklists. See Customization › Extending Objects.
  • For multi-touch attribution, see the customisation guide.

On this page