A Salesforce webinar integration is only useful when everyone understands exactly what crosses the system boundary. With HeyStream, a registration or live attendance event can create or update a Salesforce Contact using the person's email address, first name, and last name.
That is the native handoff. HeyStream does not currently create Salesforce Campaigns or Campaign Members, update Campaign Member Status, create activities, map custom fields, or write attribution records. Those layers need a separate Salesforce process, automation, or implementation choice.
This guide shows you how to design that workflow without confusing Contact availability with campaign membership, buying intent, or revenue influence. You will get a clear capability map, a state model, an ownership plan, a worked example, and a practical pre-launch test.
What HeyStream sends to Salesforce
HeyStream's Salesforce integration listens for two events: a person registering for a broadcast and a registered person attending live. For either event, HeyStream looks for one Salesforce Contact with the same email address.
If it finds a Contact, it updates that record. If it does not, it creates a Contact. The current payload includes email, first name, and last name. The authorized Salesforce user must be able to query, create, and update Contact records.
The distinction between native behavior and your own Salesforce setup matters:
| Capability | Native HeyStream behavior | Separate Salesforce or automation work | Safe interpretation |
|---|---|---|---|
| Contact create or update | Yes, using exact email matching | Apply your own duplicate and data-quality policy | The person is available as a Salesforce Contact |
| Registration handoff | Triggers Contact create or update | Add campaign membership or a Registered status if needed | The person registered in HeyStream |
| Live attendance handoff | Triggers Contact create or update | Add or update an Attended status if needed | The person attended live in HeyStream |
| Campaign creation | No | Create or select the relevant Salesforce Campaign | A Campaign exists only if your team creates one |
| Campaign Member creation | No | Add the Contact to the Campaign | A Contact is not automatically a Campaign Member |
| Campaign Member Status | No | Define and apply statuses in Salesforce | A status reflects your configured process |
| Activity record | No | Create through your own workflow if required | Contact sync is not an activity timeline |
| Custom field mapping | No | Use another supported implementation layer | Only the current Contact fields are written |
| No-show or replay state | No | Derive from reliable source data and apply separately | Absence of an attendance write does not prove a no-show |
| CTA, question, or poll signal | No Salesforce write | Use audience intelligence and your own routing logic | One behavior is context, not proof of intent |
| Opportunity influence or attribution | No | Configure the Salesforce model and reporting relationships | Registration or attendance does not prove revenue influence |
This is narrower than some webinar tools, but the boundary is predictable. If Contact availability is the handoff you need, the native connector can keep registrants and attendees out of manual exports. If your operating model depends on Campaign Members, custom fields, replay states, activities, or attribution, decide on that additional implementation before the webinar.
For a platform-neutral view of the same planning problem, see how to integrate webinar data with your CRM.
Contacts, Campaign Members, statuses, and influence are different
A Contact is the person record. It can hold identity and account-related information, but its existence does not tell you which webinar the person joined or what stage they reached.
A Campaign Member connects a Lead or Contact to a Salesforce Campaign. That relationship is where a team can represent participation in a particular marketing initiative.
A Campaign Member Status describes the member's state inside that Campaign. Salesforce's Campaign Member Status guidance gives event-oriented examples such as Registered, Attended, and No Show, while making clear that teams define and apply the statuses within their own Salesforce process. Creating the labels does not make webinar data move into them automatically.
Campaign Influence is another layer again. Salesforce documents Customizable Campaign Influence as a model built around relationships between campaigns, campaign members, opportunities, contact roles, and influence records. A webinar registration or attendance signal cannot establish those relationships by itself.
This gives you a useful rule: treat the HeyStream Contact sync as a data handoff, then decide separately whether you need campaign membership, statuses, activities, opportunity relationships, or attribution.
Choose the data model before connecting
Start with the business question, not the integration toggle.
If the goal is simply to make new webinar contacts available to a sales or customer team, Contact create/update may be enough. The owner can find the person in Salesforce and use the record within an existing follow-up process.
If the team needs event-level segmentation or campaign reporting, define the extra model before connecting:
- Decide whether every broadcast gets its own Campaign or uses another grouping.
- Decide who creates Campaign Members and when.
- Agree a small status vocabulary that matches data you can actually observe.
- Identify the source for each status change.
- Assign an owner for failed writes, duplicates, and reporting gaps.
- Confirm required Contact fields and validation rules before the first live event.
Registered, Attended, and No Show can be useful status labels, but they are not a universal taxonomy. A replay state may be valuable for one team and unnecessary for another. More labels are not better if nobody can apply them reliably.
Keep ownership explicit:
| Decision or task | Webinar marketer | Salesforce admin or RevOps | Sales owner |
|---|---|---|---|
| Confirm broadcast and registration flow | Owns | Reviews data needs | Informed |
| Authorize the Salesforce connection | Coordinates | Owns access and permissions | Informed |
| Define Campaign and status model | Consulted | Owns | Consulted |
| Test registration and attendance writes | Owns event steps | Verifies Salesforce result | Informed |
| Define follow-up routing | Consulted | Implements routing where needed | Owns response |
| Investigate failed or duplicate records | Supplies event context | Owns Salesforce diagnosis | Reports impact |
| Approve reporting claims | Supplies webinar context | Confirms data model | Confirms commercial interpretation |
This division prevents the webinar producer from accidentally becoming the Salesforce architect and prevents RevOps from having to infer what happened inside the broadcast.
Connect HeyStream and verify access
Salesforce connections are managed from the Integrations area in HeyStream. The current setup uses Salesforce authorization, and the connected user must have permission to read, create, and update Contacts.
CRM and email integrations are currently included on the Growth and Scale plans. The HeyStream pricing page is the best place to verify packaging before you plan the rollout, because plan details can change.
At a high level, the setup is:
- Open your workspace's Integrations settings.
- Choose Salesforce and authorize the intended Salesforce user.
- Confirm the connection succeeds.
- Run a controlled registration test.
- Check the resulting Contact in Salesforce.
- Run an attendance test and check the Contact again.
- Confirm that the non-native objects and statuses remain unchanged unless your own Salesforce workflow handles them.
Use a Salesforce user whose permissions and ownership are understood. A connection can authorize successfully while a later Contact write still conflicts with an organization-specific validation rule or required field.
If you maintain a Salesforce sandbox, decide whether it is part of your testing policy. Do not assume a production and sandbox organization share the same validation rules, required fields, automation, or duplicate management.
Map each webinar state to an owner
The cleanest implementation treats every state as a contract between a source system, an owner, and a permitted conclusion.
| Webinar state | Native HeyStream Salesforce behavior | Additional work if needed | What you can safely say |
|---|---|---|---|
| Registered | Creates or updates a Contact | Create Campaign Member and apply Registered status | The person registered |
| Attended live | Creates or updates a Contact | Apply Attended status | The person attended live |
| Registered but not observed live | No no-show write | Compare reliable registration and attendance data | The person may be a no-show after reconciliation |
| Replay viewer | No replay-state write | Bring replay data into the chosen workflow | The person watched replay only when supported by source data |
| CTA click | No Salesforce write | Route the signal from the appropriate system | The person clicked a specific CTA |
| Asked a question | No Salesforce write | Add context through an owned process if useful | The person asked that question |
| Poll response | No Salesforce write | Store or route according to your data policy | The person selected that response |
| Sales follow-up completed | No webinar-originated write | Sales or automation records completion | Follow-up happened only when the owner records it |
HeyStream's audience records can keep registration, viewing, questions, polls, and CTA activity close to the broadcast. That context can support prioritization, but it should not be compressed into a single intent label without account fit and human judgment.
A useful handoff says, "This person attended, asked about implementation, and matches our target account profile." A risky handoff says, "This person is sales-ready" because one event crossed an arbitrary score.
Build follow-up segments without overstating intent
The simplest segments are based on observed states:
- Live attendees can receive a follow-up that references the live session.
- Registrants who did not attend can receive a recording or a shorter summary, but only after your workflow reliably establishes the absence.
- Replay viewers can receive follow-up based on replay behavior only when that signal is available to the system doing the routing.
- People who asked questions or clicked a CTA can be prioritized when the action, account fit, and topic make the next step relevant.
A webinar lead scoring model can help combine fit and multiple behaviors without treating one click as a verdict. HeyStream's webinar follow-up automation can support HeyStream-side messaging, but it does not change the current Salesforce connector's Contact-only boundary.
Imagine a fictional software company running a webinar called "Reducing Month-End Reporting Work." Priya registers with her work email, so HeyStream creates a Salesforce Contact. She attends live, which triggers another Contact upsert. During the session she asks about multi-entity reporting.
The team can safely know three things: Priya registered, she attended, and she asked a specific question. If her company matches the target profile, the sales owner may choose a relevant follow-up. The team cannot yet claim that she wants a purchase, influenced an opportunity, or generated pipeline.
If RevOps has separately created a Campaign, added Priya as a Campaign Member, and applied an Attended status, Salesforce can report that campaign relationship. Those are customer-configured steps, not hidden effects of the HeyStream Contact sync.
Report at the right layer
Reporting becomes more useful when each layer answers only the question it can support.
| Reporting layer | Question it can answer | What it cannot prove |
|---|---|---|
| Sync health | Did the expected Contact become available? | Campaign performance |
| Registration and attendance operations | Did the observed webinar states reach the owned workflow? | Sales intent |
| Response and follow-up operations | Did the right owner act on the signal? | Opportunity influence |
| Opportunity reporting | Is the Contact related to an opportunity through the configured Salesforce model? | Causation |
| Attribution or influence | What does the selected influence model assign? | A universal truth about why revenue occurred |
Salesforce's campaign reporting guide separates Campaign Member reporting, response analysis, campaign revenue reports, and influenced-opportunity reports. That separation is why a Contact sync should not be described as attribution by itself.
The practical sequence is to verify sync health first, then campaign membership and status operations, then follow-up, then opportunity relationships, and finally influence reporting. Skipping straight to revenue language creates a confident story from incomplete data.
Run a controlled pre-launch test
Do not wait for the real webinar to discover a validation rule, permission problem, or ownership gap. Use a controlled test identity that does not expose sensitive customer data.
Run this checklist:
- Authorize the intended Salesforce user.
- Confirm the workspace is on an eligible plan.
- Check that the Salesforce user can query, create, and update Contacts.
- Review required Contact fields, validation rules, and duplicate policies.
- Register with a new test email and confirm a Contact is created.
- Register with an existing Contact's exact email and confirm the intended record is updated.
- Attend the test broadcast and confirm the Contact remains correct.
- Check that email, first name, and last name match the source data.
- Verify that no Campaign, Campaign Member, status, activity, custom-field, or attribution write happened natively.
- Test any customer-owned Campaign or automation layer separately.
- Assign an owner and recovery step for a failed write.
- Record the expected result so the live-event team knows what success looks like.
Exact-email lookup means email quality matters. It does not replace your Salesforce duplicate rules, merge policy, Lead conversion process, or broader identity resolution. If the same person exists as a Lead, or uses a different email, treat that as a Salesforce data-governance question.
When the native connector is enough
The native connector is a good fit when the requirement is straightforward: make HeyStream registrants and live attendees available as Salesforce Contacts, using their core identity fields, so the team can work from Salesforce without a manual contact export.
Plan an additional implementation layer when you need any of the following:
- Automatic Campaign or Campaign Member creation
- Campaign Member Status updates
- Lead creation or Lead-and-Contact matching
- Custom field mapping
- Salesforce activity creation
- Contact tags or list membership
- No-show or replay-state writes
- CTA, question, or poll writes
- Complex routing inside Salesforce
- Opportunity relationships, influence, or attribution records
Choose that layer based on your Salesforce architecture and data policy. Do not assume a generic automation recipe is safe for every organization.
The takeaway
A dependable Salesforce webinar workflow starts with a precise data contract. HeyStream can create or update Contacts when people register or attend. Your team then decides whether to add Campaign Members, statuses, follow-up rules, opportunity relationships, or influence reporting.
That boundary is useful because it is testable. Verify the Contact handoff, assign every additional state to an owner, and make claims only at the layer your data supports.
If Contact sync is the handoff your team needs, review the current Salesforce integration for HeyStream and test it with a controlled record before the next live broadcast.



