Salesforce Campaign Best Practices for Events: Hierarchy, Statuses, Dashboard
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 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 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.
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 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 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.
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 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 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 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.