This document outlines the technical specifications, architectural topology, and configuration requirements for integrating the InEvent Virtual & Hybrid Event Platform with Salesforce Marketing Cloud Account Engagement (formerly Pardot). The integration supports the enterprise marketing stack by establishing a bi-directional data pipeline between the event execution layer (InEvent) and the marketing automation layer (Pardot).
The primary objective of this integration is to automate the flow of Prospect identity data and behavioral signals. By synchronizing these disparate systems, the organization can leverage Pardot’s Engagement Studio for automated communication workflows while utilizing Salesforce’s robust reporting engine for Multi-Touch Attribution (MTA). This setup eliminates manual list uploads, reduces data latency, and ensures compliance with GDPR/CCPA data privacy standards through automated consent propagation.
The integration operates effectively through two distinct architectural pathways. The selection of the pathway depends on the organization’s current Salesforce Connector version (v1 or v2) and the specific requirement for Custom Object data visibility.
Pathway A: Direct API Integration (Native)
In this configuration, InEvent communicates directly with the Pardot API (v4 or v5).
Ingress: InEvent pushes Prospect data directly to the Pardot Prospect Database.
Egress: InEvent queries Pardot Static Lists for audience segmentation.
Use Case: Best suited for organizations where Pardot is treated as the primary lead
database separate from the Salesforce CRM, or for "Growth" edition accounts lacking advanced Salesforce synchronization.
Pathway B: Via Salesforce Connector (Recommended for Enterprise)
In this configuration, InEvent integrates primarily with the Salesforce CRM (Sales Cloud), and Pardot acts as a downstream recipient of data via the standard Salesforce-Pardot Connector.
Data Flow: InEvent writes to the Salesforce Lead and Contact objects and creates Campaign Member records.
Sync Logic: The Salesforce-Pardot Connector detects changes in the CRM (e.g., a new Campaign Member status of "Attended") and synchronizes these updates to the Pardot Prospect record during the standard polling interval (approx. 2-10 minutes).
Use Case: Essential for Enterprise and Unlimited editions. This pathway allows for the utilization of Salesforce Custom Objects, robust B2B Marketing Analytics (B2BMA), and cleaner data governance by using Salesforce as the "Master" for data conflicts.
The integration scope encompasses the following data entities:
Identity Resolution: creating or updating Prospects based on Email Address.
Field Synchronization: Mapping demographic and firmographic data (First Name, Last Name, Job Title, Company, Industry).
Activity Logging: Recording registration events, check-ins, and session attendance.
A Pardot integration is only “done” when security and governance are explicit. Most integration failures in production are not API failures. They are permission mismatches, unclear data ownership, and ungoverned field writes that create compliance risk or break reporting. This section defines the minimum security posture for stable, audit-friendly operation.
Use a dedicated Salesforce Integration User with least-privilege access. This prevents connector outages when an employee leaves or changes roles. The user should have:
API access enabled
Permission to read/write Leads and Contacts as required
Permission to create/update Campaign Member records (Pathway B)
Access to the relevant Pardot Business Unit (Pathway A) or Connected Campaigns (Pathway B)
Governance rule: rotate credentials on a schedule and document ownership (Admin + backup owner). Store Client Secrets in an approved secret manager, not in shared documents.
Define scope by object and by field, not “full access.” A safe default is:
Write: Lead/Contact core identity fields required for routing (Email, Name, Company, Title) only where policy allows
Write: Campaign Members and statuses for attribution
Write (optional): Event-specific custom fields (e.g., Ticket Type, Dietary Preference) mapped to approved Pardot Prospect fields
Read: Lists used for segmentation (Static Lists / Dynamic Lists logic)
Avoid giving the integration permission to overwrite authoritative CRM fields unless explicitly required. Keep “Use Salesforce Value” as the default for identity and firmographics, and treat event registration inputs as context, not source of truth.
To support GDPR/CCPA alignment, define how consent and email preferences move across systems:
If Pardot = source of truth for “Do Not Email,” ensure your sync logic prevents operational emails from being sent to suppressed Prospects.
If InEvent collects consent at registration, map consent fields to Pardot custom fields and drive Engagement Studio eligibility from those fields or lists.
Apply suppression lists (e.g., Cancelled, Opt-Out, Internal Staff) as hard gates in Engagement Studio so automation cannot “accidentally” message restricted audiences.
Recommendation: implement a “Compliance Status” field (Allowed / Restricted / Unknown) and require it for entry into any event lifecycle program.
Event registration can contain casual or inconsistent data. Establish a write policy:
Never overwrite: Account-level data, owner assignment, lead status, lifecycle stage (unless marketing ops approves)
Write with caution: Job title and phone (only if your CRM is incomplete and you want enrichment)
Write freely: Event-specific context fields (attendance status, ticket type, session interests, UTM source)
This reduces downstream data cleanup and protects long-term reporting integrity.
Define how issues are detected and handled:
Daily integration health check: authentication status, API limit usage, error queue size
Error logging: store error codes (API_ERR_AUTH, API_ERR_FIELD, etc.) with timestamps and impacted record IDs
Alert routing: send critical failures (auth, API limit lockout, connector disconnect) to a shared ops mailbox and a Slack/Teams channel if available
Audit trail: document changes to field mappings, list mappings, and Campaign status mappings (who changed what, when, why)
Operational standard: treat mapping changes like production releases. Test in a sandbox or with a controlled pilot list before rolling out globally.
Events create time pressure. Freeze integration changes during critical windows:
7 days before event: freeze field mapping and list logic
48 hours before event: freeze Campaign Member status mapping
During event days: allow only emergency fixes, documented and approved
This prevents last-minute “small changes” that break segmentation or attribution at the worst possible time.
The foundation of the integration is the accurate mapping of the InEvent Attendee object to the Pardot Prospect object. This section details the data schema and conflict resolution logic.
Pardot utilizes AMPSEA (Allow Multiple Prospects with Same Email Address). However, for the purpose of this integration, the Email Address serves as the primary deduction key.
Logic: When InEvent pushes a record, it queries the Pardot database by Email.
Conflict Resolution: If multiple Prospects share an email (e.g., duplicates exist in Pardot), the integration will update the Prospect record with the most recent activity timestamp. To maintain data integrity, it is highly recommended to perform a database hygiene exercise to merge duplicate Prospects prior to enabling the sync.
The following table defines the required mapping between InEvent Standard Fields and Pardot Default Fields. These mappings must be configured in the InEvent Integration Dashboard.
|
InEvent Field |
Pardot Field API Name |
Data Type |
Sync Behavior (Recommended) |
|
First Name |
first_name |
String |
Use Salesforce Value |
|
Last Name |
last_name |
String |
Use Salesforce Value |
|
|
|
String |
Use Salesforce Value |
|
Company |
company |
String |
Use Salesforce Value |
|
Job Title |
job_title |
String |
Use Salesforce Value |
|
City |
city |
String |
Use Salesforce Value |
|
Country |
country |
String |
Use Salesforce Value |
|
Phone |
phone |
String |
Use Salesforce Value |
Note on Sync Behavior: Setting the behavior to "Use Salesforce Value" ensures that if a Prospect registers for an event with a slightly different job title (e.g., "VP Marketing" vs "Vice President of Marketing"), the trusted data in the CRM is not overwritten by potentially casual data entry during event registration. If the goal is to enrich data, change this setting to "Use the most recently updated record."
Event registration forms often capture data points that do not exist in the standard Pardot schema (e.g., "Dietary Restrictions," "T-Shirt Size," or "Purchasing Authority").
Configuration Steps:
Create Field in Pardot: Navigate to Pardot Settings > Object and Field Configuration > Prospect Fields. Create a Custom Field (e.g., Event_Dietary_Preference).
Map in InEvent: In the InEvent integration settings, map the specific Registration Form Question to the Event_Dietary_Preference API name.
Data Type Validation: Ensure strict data type alignment. If the Pardot field is a "Dropdown" (Picklist), the InEvent registration form must utilize a "Selection" input with identical values. A mismatch (e.g., sending "Vegan" to a field that only accepts "Plant-Based") will result in a Sync Error and the record may fail to update.
The connector is configured to ignore null values by default. If a field in InEvent is empty, it will not overwrite an existing value in Pardot with a null. This protects the integrity of enriched prospect profiles. However, if "Overwrite" is explicitly enabled in the API configuration, an empty string sent from InEvent will wipe the data in Pardot. This setting should be disabled for all production environments.
Pardot’s Engagement Studio is the orchestration engine for event lifecycle communications. The InEvent integration fuels this engine by providing the necessary triggers and decision points.
The most robust method for initiating an Engagement Studio Program is List Membership.
Process: When a user registers in InEvent, the integration adds the Prospect to a specific Pardot Static List (e.g., "Event_2024_London_Registrants").
Studio Configuration: The Engagement Studio Program uses this list as the Recipient List. As soon as the API adds the Prospect to the list, they enter the program flow immediately (or according to business hours settings).
For more complex segmentation, use Dynamic Lists based on custom field values synced from InEvent.
Example: A Dynamic List named "VIP Registrants" can be configured with the logic:
Prospect List is member of Event_2024_Global
AND
Prospect Custom Field [Ticket_Type] is VIP
Usage: This Dynamic List can feed a separate "VIP Experience" track within Engagement Studio, ensuring high-value attendees receive specialized communications without manual sorting.
Once inside the Engagement Studio, the integration enables behavioral branching based on the attendee's lifecycle state. Since "Status" is a dynamic field, we often use "Tags" or "List Membership" to denote state changes.
Technical Example: Post-Event Follow-Up Flow
Trigger: Prospect enters program via Event_Registration_List.
Action: Send Email 1: "Know Before You Go."
Wait Step: Wait until Specific Date (Event Start Date).
Wait Step: Wait 2 days (Allow for data sync post-event).
Rule (Decision Node): Check List Membership.
Condition: Is Prospect a member of Event_Attendance_List? (This list is populated by the integration upon physical check-in or virtual login).
Branch YES (Attended):
Action: Send Email 2: "Thank You for Attending / Slide Deck."
Action: Adjust Score +50.
Action: Notify Assigned User (Salesforce Task).
Branch NO (No-Show):
Action: Send Email 3: "Sorry We Missed You / On-Demand Link."
Action: Add to Nurture Program "General Webinars."
To prevent communication fatigue, the integration should manage suppression lists automatically.
Configuration: Create a Static List named Event_Cancelled.
Logic: If a user cancels their registration in InEvent, the integration should (via API) add them to the Event_Cancelled list and remove them from the Event_Registrants list.
Pardot divides lead qualification into two distinct axes: Scoring (Implied Interest based on activity) and Grading (Explicit Fit based on demographics). The InEvent integration enriches both.
InEvent activities must be translated into Pardot Score increments. Because the native API does not typically allow arbitrary writing to the distinct "Score" integer field directly (to prevent data corruption), we utilize Automation Rules triggered by the integration's signals.
Method A: Page Actions (Virtual Events)
Mechanism: If the event is virtual, InEvent pages (Lobby, Auditorium, Booths) can be tagged with Pardot Tracking Code.
Configuration: In Pardot > Automation > Page Actions.
Page URL: https://event.inevent.com/my-event/auditorium* (Wildcard).
Score Change: +10 points.
Priority Page: Check this to flag the activity in Salesforce Lead History.
Result: Every time a Prospect navigates to a session, their score increases automatically based on native web tracking.
Method B: Automation Rules (Hybrid/Physical Events)
For physical check-ins, there is no "Page View." We rely on the List Membership change or Custom Field update synced by the connector.
Rule Name: Event Scoring - Checked In.
Rules:
Prospect List :: is member of :: Event_Name_CheckIn.
Actions:
Adjust Prospect Score :: by :: +50.
Apply Tags :: Event-Attended.
Repeat Rule: Enable "Repeat Rule" only if you want to score for multiple days (e.g., +50 for Day 1, +50 for Day 2). Ensure the "Days before eligible to repeat" setting matches the event duration to prevent loop scoring.
Grading automates the qualification of leads based on the data captured during the InEvent registration process.
Scenario: A Prospect registers with the Job Title "Chief Marketing Officer."
Sync: InEvent writes "Chief Marketing Officer" to the Pardot Job Title field.
Profile: The Prospect is assigned to the "Default Profile" (or a specific Executive Profile).
Automation Rule:
Rule Name: Grading - C-Level Execs.
Rules: Prospect Job Title :: contains :: Chief OR CMO OR CEO.
Actions: Change Profile Criteria :: Default Profile :: Job Title :: Matches.
Result: The Prospect's Grade increases (e.g., from D to B+), signalling to the Sales team that this attendee matches the Ideal Customer Profile (ICP), regardless of their score.
Correctly attributing revenue to event activity is crucial for calculating ROI. This section details how to align InEvent with Salesforce Connected Campaigns.
In modern Salesforce environments, Pardot Campaigns and Salesforce Campaigns are connected one-to-one.
Setup: Create a Campaign in Salesforce (e.g., "2024_Q3_Hybrid_Conf"). Ensure "Active" is checked and "Connected Campaigns" is enabled in Pardot Settings.
InEvent Link: In the InEvent Integration dashboard, select this specific Salesforce Campaign.
Member Status Mapping: The integration must map InEvent Actions to Campaign Member Statuses.
Registration -> Responded (or Registered)
Check-In -> Attended
No-Show -> No Show (Custom Status)
Impact: By updating the Campaign Member Status to Responded or Attended, the Prospect is officially linked to the campaign. If an Opportunity is later created and closed-won, the Campaign Influence report in Salesforce will attribute revenue to this event based on the influence model (First Touch, Last Touch, or Even Distribution).
To track exactly where registrants originated (e.g., LinkedIn vs. Email vs. Partner Referral), utilize Pardot's custom tracking parameters in your InEvent registration URLs.
Base URL: https://event.inevent.com/register
Pardot Custom Redirect: Create a Custom Redirect in Pardot for each channel.
LinkedIn Tracker: https://go.yourdomain.com/l/12345/social-li redirects to https://event.inevent.com/register?utm_source=linkedin
Connector Logic: The InEvent connector captures the UTM parameters present on the registration page and syncs them to the Google Analytics fields in Pardot (utm_source, utm_medium, utm_campaign).
Result: You can report on "Registrants by Source" in Salesforce to see which channel drove the highest quality attendees.
With the integration active, Salesforce Admins can utilize the Pardot Lifecycle Report.
Visitor to Prospect: Captured when they hit the InEvent landing page (if Pardot tracking code is embedded).
Prospect to MQL: Triggered when the "Event Scoring" Automation Rule pushes their score above the threshold (e.g., 100 points).
MQL to SQL: Triggered when the Sales Rep converts the Lead in Salesforce after seeing the "Attended" status.
This Standard Operating Procedure (SOP) outlines the execution steps for a Salesforce Admin to configure the connection.
Prerequisites:
Pardot Administrator Access.
Salesforce System Administrator Access.
InEvent Organization Admin Access.
Pardot Business Unit ID (for v5 API).
Navigate to InEvent > Account > Integrations.
Select Salesforce / Pardot.
Choose Connector Type:
Select "Salesforce" if you rely on the Salesforce Connector for Pardot (Recommended).
Select "Pardot Native" only if connecting directly to Pardot standalone.
Click Link Account. You will be redirected to the Salesforce OAuth login screen.
Log in with a dedicated Integration User (Best Practice: Do not use a personal user account to prevent disconnection if that employee leaves).
Grant "Allow Access" permissions.
If using the Direct Pardot API, you must specify the Business Unit ID.
In Salesforce, navigate to Pardot Account Setup.
Copy the Business Unit ID (starts with 0Uv...).
Paste this ID into the InEvent Integration settings field.
In InEvent, navigate to the specific Event level.
Go to Integrations > Settings.
Locate Campaign Linking.
Select the Salesforce/Pardot Campaign designated for this event.
Validation: Ensure the Campaign is "Active" in Salesforce, otherwise, the API call to add members will fail.
In the InEvent Integration tab, open Field Mapping.
Map Standard Fields first (Email, First Name, Last Name, Company).
Map Custom Fields (Registration Questions). Ensure the API Names in Pardot exactly match the selection in InEvent.
Enable "Update Empty Fields Only" if you wish to preserve existing CRM data, or "Overwrite" if InEvent should be the source of truth for this event.
Configure the List Logic.
"Add Registrants to List:" Select the Pardot Static List (e.g., Event_Registrants).
"Add Attendees to List:" Select the Pardot Static List (e.g., Event_Attendees).
"Add Absentees to List:" Select the Pardot Static List (e.g., Event_NoShows).
Save the configuration.
Open the InEvent Registration Page.
Register a Test Prospect (e.g., testing.user+01@domain.com).
Wait 2–5 minutes.
Check Pardot:
Search for the Prospect.
Verify the record exists.
Verify they are a member of the mapped Static List.
Verify Custom Fields are populated.
Simulate Attendance: In InEvent, manually mark the user as "Checked In."
Wait 5–10 minutes.
Check Pardot: Verify the Prospect is now in the "Attendee" list and/or their Campaign Member Status in Salesforce has updated to "Attended."
1. What is the sync latency?
A:
Form Handlers (Web): Real-time. When a form is submitted, the data is posted immediately.
Direct API (Metadata): Near real-time (1-5 minutes).
Salesforce Connector: If syncing via Salesforce, the latency is determined by the Salesforce-Pardot connector polling interval, which is typically 2 to 10 minutes depending on the connector queue load.
Activity/Engagement History: Non-critical metadata may be batched and synced every 10-15 minutes.
2. How do we handle Form Handlers if we don't use the API?
A: If your security policy restricts API access, you can use Pardot Form Handlers.
Create a Form Handler in Pardot.
Map the fields (Email, FName, LName).
Copy the Endpoint URL (http://go.pardot.com/l/123/2023-01-01/xyz).
In InEvent, configure the "Custom Integration" or "Webhook" to POST the registration payload to this Endpoint URL.
Critical: Form Handlers require a "Success Location" and "Error Location." Ensure InEvent is configured to handle the 302 Redirect response from Pardot, or use a silent post method (server-side submission) to avoid redirecting the user's browser away from the event lobby.
3. Does the integration support Salesforce Custom Objects?
A: Yes, but primarily via the Salesforce Connector pathway. InEvent writes the data to a Salesforce Custom Object (e.g., InEvent_Session_Log__c). You must then configure Custom Object Sync in Pardot Settings.
In Pardot, go to Admin > Custom Objects.
Add the Custom Object.
This allows you to run Automation Rules in Pardot based on the Custom Object data (e.g., InEvent_Session_Log__c :: Duration :: greater than :: 30).
4. How are "Hard Bounces" handled?
A: Sync is bi-directional regarding email deliverability status in specific configurations.
Pardot to InEvent: If a Prospect is marked as "Hard Bounced" or "Do Not Email" in Pardot, the integration can flag this user in InEvent to suppress operational emails, though this usually requires a custom webhook setup.
InEvent to Pardot: If an invite sent from InEvent bounces, InEvent does not natively write to the Pardot "Hard Bounce" field (which is system protected). It will, however, update a custom field (e.g., Event_Email_Status = Bounced) which you can use to trigger an Automation Rule to mark the Prospect as "Do Not Email."
5. What happens if the API Limit is reached?
A: Pardot/Salesforce imposes daily API limits. The InEvent connector utilizes bulk endpoints where possible to minimize calls. If the limit is reached, the sync will pause and queue the requests. It will retry automatically once the API quota resets (rolling 24-hour window). Critical errors (Authentication failures) will trigger an alert to the Admin email address on file in the InEvent integration settings.
6. Can we sync to multiple Pardot Business Units (PBUs)?
A: The native connector typically links to a single Business Unit associated with the authenticated user. If you are operating in an Enterprise environment with multiple PBUs (e.g., distinct geos), you should utilize the Salesforce Connector pathway.
Logic: InEvent syncs to Salesforce Lead/Contact.
Routing: Salesforce "Marketing Data Sharing" (MDS) rules determine which PBU the lead syncs to based on criteria (e.g., If Region = EMEA, sync to EMEA PBU). This delegates the routing logic to Salesforce, which is the architectural best practice.
7. How do we handle GDPR "Right to be Forgotten"?
A: Deletion is not automatically cascaded to prevent accidental data loss.
Process: If a user requests deletion in InEvent, an email alert can be sent to the Data Privacy Officer. The DPO must manually delete the Prospect in Pardot/Salesforce.
Reverse: If a Prospect is deleted in Pardot, they are NOT automatically deleted in InEvent (they may still need access to the event for legal or financial receipt reasons). Synchronization will simply stop for that record.
|
Error Code |
Meaning |
Resolution |
|
API_ERR_AUTH |
Invalid Token |
Re-authenticate the Salesforce/Pardot connector in InEvent. |
|
API_ERR_FIELD |
Field Type Mismatch |
Check that InEvent "Text" is not mapping to Pardot "Number". |
|
API_ERR_REQ |
Missing Required Field |
Ensure "Email" and "Last Name" are populated. |
|
SFDC_ERR_LOCK |
Record Locked |
The record is currently being edited by another process in Salesforce. Retry occurs automatically. |
The integration adheres to OAuth 2.0 standards. InEvent does not store Salesforce/Pardot passwords. Access tokens are encrypted at rest using AES-256 encryption. All data transmission occurs over HTTPS (TLS 1.2+). The application is subject to periodic penetration testing and security audits.