Salesforce campaign best practices for events come down to four decisions an admin makes before
promotion starts: where the event sits in the campaign hierarchy, which member statuses it
carries, who may set Primary Campaign Source on an opportunity, and which reports feed the
dashboard. Make them once, the same way for every event, and attendance becomes a count you can
read off the campaign record.

This page gives you a hierarchy template, a member status table, a written rule for Primary
Campaign Source, a dashboard specification, and a worked example. Which model gives a campaign
credit for a deal is a separate question, covered on the
[event marketing attribution](https://eventiq.io/md/event-marketing-attribution) page.

## Which Salesforce campaign records matter for an event?

- **Campaign.** The record for one marketing effort, with a type, a status, start and end
  dates, and cost fields that a person fills in.
- **Parent campaign.** A lookup from one campaign to another. It builds the hierarchy.
- **Campaign member.** A lead or contact attached to a campaign. A person can be a member of a
  given campaign once, and holds one status there at a time.
- **Member status.** The value on the member record. Statuses are defined per campaign, and
  each carries a Responded flag. A new campaign typically starts with Sent and Responded.
- **Primary Campaign Source.** A lookup on the opportunity that points to a single campaign.

Field labels, limits, and defaults depend on your edition and settings. Check Salesforce's
documentation before you rely on a setting described here.

## How should the Salesforce campaign hierarchy look for an event?

Use three levels and give each level one job.
| Level | Record | Example name | Members | Cost entered here |
| --- | --- | --- | --- | --- |
| 1 | Program or series | Customer Summit | None | None |
| 2 | Event edition | 2026 Customer Summit | None | None |
| 3 | Participation | 2026 Customer Summit: Participation | Everyone who holds a registration | Venue, production, catering |
| 3 | Promotion, one per channel | 2026 Customer Summit: Email invitation | Everyone that channel reached | That channel's cost |
Levels 1 and 2 hold no members and exist to be read. Salesforce keeps a set of hierarchy fields
on each campaign that add up the campaign and everything below it: leads, contacts, responses,
opportunities, won value, and actual cost. Those fields may need to be added to the page layout
and made visible to the profiles that read them.

Salesforce allows more than three levels, so there is room for a region or business unit above
the program.

To decide whether something deserves its own campaign or only a status, use this rule.

**New child campaign = Different audience OR different cost line OR a response that means something different**

**New member status = Same audience AND same cost line AND a further step by the same person**

An email click and a check-in at the door are both responses in Salesforce terms. Inside one
campaign they are added together. In sibling campaigns they stay apart.

Name every campaign the same way: year, event, role. Add a picklist field for the role, with
the values Participation and Promotion, so report filters do not depend on reading names. On
the participation campaign, set the start and end dates to the event dates.

## Which Salesforce campaign member statuses does an event need?

The participation campaign needs statuses that describe one person moving through one event.
| Status | Responded flag | Set from | Meaning |
| --- | --- | --- | --- |
| Registered | No | Registration export | Holds a registration. The event has not happened yet |
| Attended | Yes | Attendance record: check-in, badge scan, or session join | Was present |
| No-show | No | Registration list compared with the attendance record, after the event | Registered and did not come |
| Cancelled | No | Registration export | Withdrew before the event |
| Invited (optional) | No | Invitation list | Use only when invitations go to one list and you keep that list in this campaign |
Three rules keep the table honest.

**A member holds one status at a time.** The statuses are a sequence, and each load overwrites
the last. After the event, anyone still Registered has not been reconciled against the
attendance record.

**Responded goes on Attended only.** The campaign's response count then equals attendance. If
you flag Registered as well, the same field reports registrations before the event and a mix
afterward.

**Every event campaign carries the same list.** Build one template campaign with these
statuses and clone it for each event. Check that the clone carries the statuses in your org.

Three counts follow.

**Registrations net of cancellations = Registered + Attended + No-show**

**Show rate = Attended ÷ (Attended + No-show)**

**Unresolved members = Members still Registered after the campaign end date**

Take Attended from an attendance record, never from the registration list. The
[event attendance tracking](https://eventiq.io/md/blog/event-attendance-tracking) page covers what counts as presence
in person and online. A booth needs different statuses, ones that separate a scan from a
conversation, and the [trade show leads](https://eventiq.io/md/blog/trade-show-leads) page covers those.

## What is Primary Campaign Source, and who sets it?

Primary Campaign Source is a field on the opportunity that names one campaign. When a lead is
converted and an opportunity is created in the same step, Salesforce fills the field with the
campaign the lead was most recently associated with. In other cases a person or an automation
fills it, or it stays blank.

In a standard setup, the opportunity counts and values shown on a campaign record follow this
field, and so does the standard campaign ROI report.

**Opportunities in campaign = Opportunities whose Primary Campaign Source is this campaign**

**Campaign ROI, standard report = (Value of won opportunities − Actual cost) ÷ Actual cost × 100**

**Source fill rate = Opportunities with Primary Campaign Source filled ÷ Opportunities created in the period**

Write down who sets the field and when, so two sales reps handle the same deal the same way.
| Situation | What goes in the field | Who acts |
| --- | --- | --- |
| A lead who attended is converted and an opportunity is created at conversion | Salesforce fills in the lead's most recent campaign. Check that it is the participation campaign and not a later follow-up email | Opportunity owner, at conversion |
| An opportunity is created from an existing contact with status Attended, inside your agreed number of days after the event, and the field is blank | The participation campaign | Opportunity owner, at creation |
| The contact is Registered, No-show, or Cancelled | Not the participation campaign | Opportunity owner |
| The opportunity was already open at the event, or the field already holds another campaign | Leave the field as it is | Nobody |
The last row means an event that touched a deal already in progress shows nothing on its own
campaign record. That is the limit of a single-source field, and campaign influence models
exist for that case. Overwriting the source moves credit away from another campaign and changes
a number someone has already reported.

## What belongs on a Salesforce campaign dashboard for events?

Six components, each with a stated filter.
| Component | Built from | Grouped by | Question it answers |
| --- | --- | --- | --- |
| Members by status | Campaign member report, role is Participation | Event, then status | How many registered, attended, or did not come? |
| Show rate | The same report, with the show rate formula | Event | Which events lose the most registrants? |
| Unresolved members | Members with status Registered on campaigns whose end date has passed | Event | Which events have not been reconciled? |
| Open pipeline | Open opportunities whose Primary Campaign Source sits in an event hierarchy | Event, then stage | What is still in play? |
| Won value and actual cost | Campaign report on level 2, using the hierarchy fields | Event edition | What did single-source credit return against the cost entered? |
| Source fill rate | Opportunities created this quarter, split by blank and filled Primary Campaign Source | Owner or team | How much of the pipeline can any campaign report see? |
Keep open pipeline and won value in separate components. An amount at the proposal stage is not
revenue, and a chart that stacks both invites a reader to add them.

Put the model and the snapshot date in the dashboard description, so a reader who later sees a
campaign influence report knows why the two figures differ.

## Example: one conference in a three-level hierarchy

Take a customer conference with one participation campaign and two promotion campaigns under
the event edition. All figures are hypothetical.
| Campaign | Members | Responded | Actual cost | Opportunities by Primary Campaign Source | Won value | Open value |
| --- | --- | --- | --- | --- | --- | --- |
| Participation | 640 | 448 | $180,000 | 9 | $210,000 | $330,000 |
| Email invitation | 5,000 | 600 | $4,000 | 0 | $0 | $0 |
| Partner promotion | 300 | 90 | $16,000 | 2 | $40,000 | $50,000 |
| Event edition, hierarchy total | 5,940 | 1,138 | $200,000 | 11 | $250,000 | $380,000 |
The participation campaign's 640 members split into 448 Attended, 160 No-show, 32 Cancelled,
and none still Registered. Registrations net of cancellations are 448 + 160 = 608.
Show rate is 448 ÷ 608 = 73.7%. Because Responded sits on Attended only, the campaign's response
count is 448, which is the attendance figure.

In the hierarchy row, responses total 1,138, and only 448 of them are people in the room. The
other 690 are email clicks and partner sign-ups, so attendance has to come from the
participation campaign. The 5,940 members are memberships: someone on the email list who then
registered is counted in both campaigns.

Under Primary Campaign Source, the participation campaign shows 9 opportunities: $210,000 won
and $330,000 open. The standard ROI arithmetic for that campaign is
($210,000 − $180,000) ÷ $180,000 × 100 = 16.7%. For the event edition as a whole it is
($250,000 − $200,000) ÷ $200,000 × 100 = 25%. The $380,000 of open pipeline belongs in neither
calculation.

Two cautions about that 25%. The cost is whatever was typed into Actual Cost, which usually
leaves out staff time and travel. The [event ROI](https://eventiq.io/md/event-roi) guide sets out the full cost line
before you present a return. And the revenue is single-source: suppose 120 opportunities were
created in the quarter after the event and 78 have a Primary Campaign Source. The source fill
rate is 78 ÷ 120 = 65%. The other 42 opportunities are invisible to every campaign record.

## Which mistakes break campaign reporting?

**One campaign for the invitation list and the attendees.** Clicks and attendance land in the
same response count, and neither can be read afterward.

**Changing Primary Campaign Source after the result is known.** The number on the campaign
record improves and stops being comparable with last quarter's.

**Actual cost left blank.** The standard ROI report has nothing to divide by.

## What to do this quarter

- Build one template campaign with the participation statuses and the Responded flag on
  Attended, and clone it for the next event.
- Create the three levels for that event before promotion starts, and add the role picklist.
- Write the Primary Campaign Source rule with sales leadership, including the number of days
  after the event, and publish it where opportunity owners will see it.
- Build the unresolved members report and the source fill rate report before the other four
  dashboard components.
- Set a date after each event by which every member is moved out of Registered, and name who
  does it.

## Common questions

### Should each event be one campaign or several?

Several, under one parent. One participation campaign holds registrations and attendance, and
each promotion channel gets its own sibling. A single campaign works only for a small event
with one invitation list.

### Should Registered count as Responded?

Only if you report registrations and never attendance from that campaign. For an event you
compare on show rate or attendance, keep the flag on Attended and count registrations from the
statuses.

### Can you change Primary Campaign Source after the opportunity is created?

The field can be edited by anyone with access to it, which is the reason to write the rule.
Decide whether edits are allowed after a named stage, and report changes to the field if your
org tracks field history on opportunities.

## Where EventIQ fits

EventIQ replaces nothing. It connects on top of the platforms you already run: event platforms
(Cvent, Zoom, Swapcard), CRM (Salesforce, HubSpot, GoHighLevel), and marketing (Google Ads, Meta
Ads, LinkedIn Ads, Mailchimp, Google Analytics). Platforms with an API outside that list are
connected on request.

Salesforce deals arrive with stage, amount, and close date, and they are linked to an event
through one campaign relationship that a person confirms. The link is one event to one
campaign, so consistent campaign names make it clear which record to confirm. A Cvent
registration carries its date and an attendance mark, so registered and attended stay distinct. Attendees are matched to CRM
contacts by exact email, and the result stays on each record: matched, unmatched, or no email.
The [Salesforce integration](https://eventiq.io/md/integrations/salesforce) page has the detail.

The boundary is that one confirmed link. EventIQ does not run multi-touch attribution and does
not split credit across campaigns. The product shows an attribution model picker, and it does
not change the calculation yet, so the figures are the same whichever model is selected. The
ROI figure in the product is arithmetic on the budget and revenue target you enter, so it is a
different number from the campaign ROI report in Salesforce. There is no match-rate screen, and
the event link exists for Salesforce only: HubSpot deals come in without one. Building the
hierarchy, defining statuses, loading members, and keeping the Primary Campaign Source rule are
your team's work in Salesforce.

[Book a demo](https://eventiq.io/#early-access) to see one Salesforce campaign confirmed against an event, with
the linked deals by stage and close date, on a sample event, in a 20-minute demo.

---

HTML version: https://eventiq.io/blog/salesforce-campaigns-for-events
