Skip to content

Campaigns

A campaign is the record of a piece of marketing — what it cost, who it went to, and what came back. Marketing owns it; sales sees its effect on the leads and deals it produced, and finance sees it as a cost line against won revenue.

Sales covers the lead and deal side of that story. This page covers the campaign record itself: its members, its counters, and the analytics built on them.

A campaign needs only a name. Everything else describes the plan and the spend: a type, an owner, a parent campaign for hierarchies, a description, start and end dates, and a currency.

The money side is budgeted cost, actual cost, expected revenue and expected response %. The targets are three goals — lead, conversion and response — plus, under Show advanced settings, a target ROI % and a target cost per lead.

Advanced settings also hold the UTM defaults — source, medium and campaign. These are not used to build links; they are stamped onto the attribution rows written when someone joins the campaign, so that attribution reporting can group by them later.

Types are Email, Webinar, Advertisement, Conference, Social Media, Partner, Referral Program and Other. (The API also accepts Content and Event; the form does not list them.)

Eight statuses exist — Draft, Planned, Scheduled, Active, Paused, Completed, Cancelled and Archived. Unlike a lead or a deal, a campaign has no guarded workflow: status is an ordinary field on the campaign form and any value can be set directly, in any order.

The form’s dropdown offers five of them — Draft, Planned, Scheduled, Active and Completed — alongside a legacy Aborted entry the API no longer accepts; saving with Aborted selected returns a validation error. Paused, Cancelled and Archived are reachable through the API only. The same legacy Aborted value appears in the list page’s status filter and behaves the same way there.

Members are the leads and contacts the campaign went to. The Members tab lists them with their engagement status, a search box over name and email, and filters for member type and status; the panel header carries a live count of total members, leads and contacts, recomputed from the rows themselves.

Add Members opens a picker with three sources:

  • Existing Leads — up to 50 matches for what you type in the search box.
  • Existing Contacts — the same, over contacts.
  • Users (Create Lead) — pick people from your own user list and the app creates a lead for each (company “Internal”, source Campaign) before adding them. Useful for internal or partner-facing campaigns.

Selections are added in one call, up to 500 at a time. Anyone already in the campaign is skipped silently rather than failing the batch, and the campaign’s counters move by the number of rows actually added. New members arrive with the status Planned.

Adding a lead does three more things: it fills in that lead’s own campaign field if the lead does not already name one — first touch wins, so a lead that already credits another campaign keeps it — it writes a first-touch attribution row carrying the lead’s source and the campaign’s UTM defaults, and it adds an entry to the campaign timeline.

Status Meaning
Planned Added to the campaign, nothing sent yet
Sent · Delivered · Opened · Clicked Delivery and engagement steps
Responded The member replied or acted; stamps a response time and lifts the campaign’s response count
Converted The member became a customer
Bounced · Unsubscribed · Failed Terminal — excluded from any campaign send

A member’s status only moves forward. Selecting an earlier step — Sent for someone already at Responded — is accepted and quietly ignored, and the row stays as it was. The three terminal statuses are sticky: the only move out of them is to Converted.

Setting a lead member to Converted also marks that lead’s attribution rows converted.

The status cell in the members table is a dropdown offering Sent, Responded, Bounced, Opted Out and Converted. Two things to know about it: Planned is not in the list, so a freshly added member’s cell reads blank until you pick something; and Opted Out is not a status the API accepts, so choosing it returns an error. To record an opt-out, use Bounced, or set Unsubscribed through the API.

Remove one member at a time from its row, or tick several and use Remove selected (also capped at 500). Removing one member at a time keeps the campaign’s counters straight — it decrements the lead or contact count, the sent count, and the response count if that member had responded. Bulk removal deletes the rows but leaves those counters where they were, so after a bulk removal the Overview stat cards and the Members tab badge will read high while the Members panel header, which counts rows directly, stays correct. Prefer one-at-a-time removal when the counters matter.

The numbers on the campaign Overview tab, in the list, and behind most of the analytics are counters kept on the campaign record as events happen — they are not recomputed on read.

Counter Moves when
Sent A member is added (+1) or removed singly (−1). It counts members, not emails.
Responses A member is moved to Responded (+1), or a responded member is removed singly (−1).
Leads · Contacts Members of that type are added or removed singly.
Opportunities · Total opp value A lead that names this campaign is converted with a deal — the deal’s amount is added to the pipeline value.
Won · Won revenue Such a deal is later closed won. Reopening that deal reverses both.

Opportunity and won figures therefore follow the lead conversion path. A deal created directly, with no lead behind it, never reaches a campaign no matter what its account’s history looks like.

Two derived figures appear straight from these: the Overview response rate (responses ÷ sent) and the ROI shown on both the Overview and the campaigns list, which is (won revenue − actual cost) ÷ actual cost. ROI reads as a dash until an actual cost is entered.

Because the counters are maintained as events happen, every screen is current the moment you open it — there is no nightly rollup to wait for, with the one exception noted under Removing members, where a bulk removal leaves the campaign-record counters behind. The API can additionally write a dated metrics snapshot for a campaign, recalculating the same figures into a history table for trend reporting — but nothing in the app calls it, and it neither corrects nor replaces the counters on the campaign record.

The Analytics tab is a read-only dashboard over one campaign, in five blocks — the goal block appearing only once a goal has been set.

ROI analysis leads with ROI and a projected ROI, then profit against revenue, cost per lead against cost per conversion, and a break-even point expressed in leads. Projected ROI is a planning figure, not a forecast from your own history: it assumes 30% of the current pipeline value closes, adds what is already won, and measures that against actual cost.

Performance metrics is a row of six: total leads (with the qualified count underneath), conversions and conversion rate, response rate, opportunities and won, pipeline and won value, and actual cost against budget.

Conversion funnel is the block most worth reading carefully. It draws five bars — Sent, Responded, Qualified, Converted, Won Deals — each labelled with its step-to-step percentage. The bars come from two different places, and knowing which matters:

  • Sent, Responded and Won Deals are the campaign counters above, so they cover every member, lead and contact alike.
  • Qualified and Converted count leads that name this campaign as their source. Contact members never appear in them, nor does a lead that was already credited to a different campaign when you added it.
  • Qualified means “past New” — it counts every attributed lead whose status is not New, which includes leads later marked Unqualified or Nurturing. Read it as worked, not as qualified in the BANT sense.

Goal progress draws a bar per goal you have set, capped at 100%. The Overview tab shows the same three goals as plain fractions, but its conversion line counts won deals where the Analytics bar counts converted leads, so the two can differ on the same campaign.

Attribution model is the one control on the tab: pick a model, press Apply Model, and every attributed lead and deal on this campaign is reweighted. The recalculation runs; the green confirmation banner names the model correctly but does not fill in the record count.

Three further analytics — day-by-day trends, revenue by source, and side-by-side campaign comparison — are served by the API but have no screen in the app yet.

The Lead Attribution tab answers “what did this campaign actually produce”. Four cards summarise it — records attributed (broken down by lead, deal and contact), how many converted and at what rate, revenue attributed, and average revenue per conversion — over a table of the individual rows.

Each row shows the lead, deal or contact by name, its source and UTM source, its position in the touch sequence (Single touch, First, Last, or Touch 2/4), whether it is Open, Converted or Won, the revenue credited to it, and the date. Filter by entity type or by converted state; the table pages 25 at a time and has a column picker. The names are styled as links but do not currently open the record behind them — open it from the Leads, Deals or Contacts list instead.

Rows are written automatically:

  • When a lead names the campaign — either because you added the lead as a member, or because the lead was created with this campaign as its source — a first-touch row is written carrying the lead’s source and the campaign’s UTM defaults.
  • When that lead converts with a deal, a second row is written for the deal, and the lead’s rows are marked converted.
  • When the deal is closed won, the won amount is spread across the lead’s attribution rows in proportion to their weights, to the cent. Reopening the deal clears it again.

Five models decide those weights: first touch (100% to the earliest), last touch (100% to the latest), linear (evenly), time decay (exponential, seven-day half-life) and position based (40% first, 40% last, 20% shared across the middle). New rows are written as first touch; applying a different model from the Analytics tab rewrites the weights for this campaign’s records.

The Timeline tab is the campaign’s own activity feed — every event with an icon, who did it, how long ago, and a Details expander showing the before and after values and any extra data. It pages 25 at a time and filters by event type.

What lands there is everything that happens around the campaign: members added singly or in bulk, removed, or moved to a new status; leads generated with this campaign as their source; lead status changes and conversions; deals created, moved between stages, won, lost, and reopened with their revenue reversed.

Changes to the campaign record itself — status, budget, owner — are not written to the timeline, so the filter’s Status changes and Budget changes options return nothing. Those edits are recorded in the campaign’s audit trail instead, which is where to look for who changed a field and when.

The campaign detail page carries a Send Email button, which opens a composer for a from address and name, a subject and a plain-text body, addressed to every member with an email address.

Terminal member statuses (Bounced, Unsubscribed, Failed) and campaigns that are Cancelled, Completed or Archived are excluded from sending by design, and remain so once sending works.

Campaigns lists name, type, status, dates, cost, leads, conversions with a percentage, revenue and a colour-coded ROI badge. Search matches the campaign name. The filter panel covers status, type, owner and a Show deleted toggle, and filter sets can be saved as list views.

Row actions are View, Edit, Delete and — on a deleted row — Restore; deletion is a soft delete, so a deleted campaign keeps its members and history and comes back intact. Ticking rows brings up a bar that transfers ownership of the selected campaigns in one step.

Campaigns also carry a Notes tab. Files can be attached to a campaign through the API, but the campaign page has no files panel, so there is no way to upload or read one from the app. Access to the whole area is governed by the campaigns entry in the permission matrix — see Roles and permissions.

  • A lead can name the campaign it came from, on both the create and edit forms, and the lead detail page links back to it. See Sales.
  • A contact record has a Campaigns panel listing the campaigns that contact belongs to and the member status in each. The campaign names in that panel are not currently clickable through to the campaign — open it from the Campaigns list instead.
  • The Android app has a searchable, read-only campaign list — name, status, type and start date, with expected revenue alongside. Tapping a row does nothing; there is no campaign detail screen on mobile. See Mobile.
  • Sales — leads name an originating campaign, and conversion is what moves a campaign’s opportunity, pipeline and won figures.
  • Reports & forecasting — campaign performance is also available as a cross-campaign report.
  • Customization — custom fields, list views and layouts apply to campaigns like any other object.