InEvent + Adobe Marketo Integration

First name *
Last name *
Work email *
Phone *
Organization *
Number of events *

By providing a telephone number and submitting this form you are consenting to be contacted by SMS text message. Message & data rates may apply. You can reply STOP to opt-out of further messaging.

Thank you!

One of our sales representatives will contact you shortly.

Executive Summary: Event Data Topology

1.1 Scope and Objective

This document serves as the authoritative technical reference for the implementation, configuration, and maintenance of the native integration between the InEvent Virtual & Hybrid Event Platform and Adobe Marketo Engage. The primary objective of this integration is to establish a robust, automated data pipeline that eliminates manual CSV handling, ensures data integrity across the marketing technology stack, and enables granular attribution reporting.

In the modern marketing technology ecosystem, event data is often siloed, leading to fragmented customer profiles and inaccurate Return on Investment (ROI) calculations. This integration resolves these issues by establishing a clear data topology: InEvent functions as the Data Collection Layer, capturing high-fidelity interaction data (registrations, session attendance, poll responses, and physical booth visits), while Marketo functions as the System of Record and Orchestration Engine, responsible for lead lifecycle management, scoring, and multi-touch attribution.

1.2 The Synchronization Protocol

The integration does not rely on a simple, flat-file transfer. Instead, it utilizes a sophisticated, bi-directional synchronization protocol leveraging the Marketo REST API and, where appropriate for high-volume data, the Bulk Import API.

The synchronization frequency is hybrid, designed to balance data immediacy with API quota governance:

  1. Identity Resolution Events (Real-Time): Critical actions that require immediate automation—specifically Registration, Waitlisting, and initial Event Check-In—are triggered via real-time API calls. This ensures that when a user registers, they exist in Marketo within seconds, allowing "Confirmation" and "Know Before You Go" emails to be deployed immediately via Marketo Smart Campaigns.

  2. Metadata & Engagement Logs (Batched): High-volume data points that are less time-sensitive—such as individual poll responses, Q&A submissions, and granular session view duration metrics—are processed in scheduled batches (typically hourly). This architectural decision prevents the exhaustion of the Marketo daily API quota (standard limit: 50,000 calls per day) during peak event activity.

1.3 Strategic Value: Attribution and Revenue Cycle

By moving beyond binary "Registered/Attended" data points, this connector enables the "Success" attribution required for advanced reporting in Marketo’s Revenue Cycle Explorer (RCE). The integration automatically maps specific InEvent behavioral triggers to Marketo Program Member Statuses. This allows the attribution engine to distinguish between a "No Show," a passive "Attendee," and a highly engaged "Delegate," assigning appropriate revenue credit to the event based on the depth of interaction.

System Architecture & Data Flow

This section details the technical architecture of the data ingress and egress. The integration acts as a middleware layer that translates InEvent’s internal object structure into Marketo-compatible JSON payloads.

2.1 Authentication and Security

The connection is secured using industry-standard OAuth 2.0 protocol. The integration does not use Basic Auth. It requires the configuration of a "Custom Service" within Marketo’s LaunchPoint interface.

  • Token Exchange: The InEvent connector exchanges a Client ID and Client Secret for a Bearer Access Token.

  • Token Lifecycle: The Access Token is valid for 3,600 seconds (1 hour). The InEvent connector includes an automated token refresh mechanism. If a call fails due to an expired token (Error Code 601 or 602), the system automatically requests a new token and retries the operation without manual intervention.

  • Transport Security: All data in transit is encrypted via TLS 1.2 over HTTPS.

2.2 Inbound Data Flow (Marketo to InEvent)

The inbound pathway is primarily utilized for Audience Segmentation and Streamlined Registration. It allows event managers to utilize Marketo’s complex filtering capabilities to define the invite list.

Mechanism: List Polling

The integration periodically polls specific Marketo Static Lists defined in the configuration. It is important to note that the API cannot efficiently poll "Smart Lists" in real-time due to the computational load required to calculate Smart List membership on the fly. Therefore, the architectural requirement is that audiences must be pushed to a Static List for ingestion.

Data Mapping Logic:

When a record is pulled from Marketo to InEvent, the system maps the following core attributes:

  • Marketo: FirstName maps to InEvent: First Name

  • Marketo: LastName maps to InEvent: Last Name

  • Marketo: Email maps to InEvent: Email (Primary Key)

  • Marketo: Company maps to InEvent: Company

  • Marketo: Title maps to InEvent: Job Title

The "Magic Link" Feedback Loop:

Upon importing a lead, InEvent generates a unique, tokenized URL known as a "Magic Link." This link contains an embedded authentication token specific to that user. The connector writes this URL back to a custom field on the Marketo Lead record (e.g., InEvent_Magic_Link__c). This allows Marketo to send email invitations where the Call-to-Action (CTA) is "One-Click Login," significantly reducing friction and increasing attendance rates.

2.3 Outbound Data Flow (InEvent to Marketo)

The outbound pathway is the primary vector for data transfer, handling Lead Management and Activity Logging.

Deduplication Strategy:

The integration strictly uses Email Address as the unique identifier for deduplication. The system does not rely on the Marketo ID (mkto_id) for initial matching, as the InEvent platform captures users who may not yet exist in the Marketo database.

  • Scenario A (Existing Lead): The system queries Marketo for the email address. If a match is found, the system performs an Update operation.

  • Scenario B (New Lead): If no match is found, the system performs a Create operation.

  • Scenario C (Multiple Matches): If Marketo returns multiple records for a single email (possible in workspaces without strict dedupe rules), the connector updates the record with the most recent UpdatedAt timestamp, ensuring the active record is enriched.

The Upsert Payload:

The connector utilizes the syncLead REST API endpoint. The payload is constructed to respect Marketo’s "Block Field Updates" settings. If a field in Marketo is set to block updates from the API (to protect data from trusted sources like a CRM), the InEvent connector will fail gracefully on that specific field while successfully updating the remaining allowed fields.

Acquisition Program Association:

For every new lead created by InEvent, the system automatically sets the Acquisition Program attribute to the connected Marketo Program. This is a critical step for First-Touch Attribution. If the lead already exists, the Acquisition Program field remains untouched to preserve the historical source of the lead, complying with standard attribution best practices.

Component 1: Program Member Status Logic (The Core Engine)

The accuracy of Marketo’s attribution reporting is entirely dependent on the Program Member Status. A simple binary status of "Member" or "Not Member" is insufficient for modern analytics. The InEvent connector utilizes a granular State Management Engine to map user behaviors to specific statuses in the Marketo Program Channel.

3.1 Channel Configuration Requirements

Before enabling the sync, the Marketo Architect must ensure the Program is using a Channel (e.g., "Webinar" or "Live Event") that has been configured with the necessary statuses. We recommend a channel strategy that separates "Registration" phases from "Attendance" phases.

3.2 The State Mapping Matrix

The following details the logic governing how InEvent Actions translate to Marketo Statuses. This mapping is fully configurable within the InEvent integration dashboard, but the default configuration below is recommended for optimal Revenue Cycle analytics.

1. Registration Phase

  • InEvent Action: Form Submit

    • Description: User completes the registration form on the InEvent landing page.

    • Marketo Status: Registered

    • Step ID: 10

    • Success: False

    • System Logic: The system checks if the user is already on the list. If not, it adds them. If they are (e.g., they were "Invited"), it changes their status to "Registered."

  • InEvent Action: Waitlist Join

    • Description: The event capacity is reached, and the user opts to join the queue.

    • Marketo Status: Waitlisted

    • Step ID: 15

    • Success: False

    • System Logic: This status is crucial for suppressing "Confirmation" emails and triggering "You are on the list" emails via a Smart Campaign trigger Data Value Change: Status is Waitlisted.

2. Attendance Phase (The Success Trigger)

  • InEvent Action: Virtual Login

    • Description: User authenticates into the Virtual Lobby via the website or mobile app.

    • Marketo Status: Attended

    • Step ID: 20

    • Success: TRUE

    • System Logic: This is the primary "Success" event. When this status change occurs, Marketo’s attribution engine assigns credit to the program. This trigger should be used to stop "Reminders" and start "Thank You for Attending" workflows.

  • InEvent Action: Physical Check-In (QR Scan)

    • Description: User scans their unique QR code at a kiosk or is scanned by staff using the InEvent Access Control app.

    • Marketo Status: Attended (or Attended - In Person if granular tracking is desired)

    • Step ID: 20

    • Success: TRUE

    • System Logic: The sync latency for this action is prioritized to near real-time to ensure that if a user checks in, their status is updated immediately.

  • InEvent Action: Physical Check-Out

    • Description: User scans out of the venue.

    • Marketo Status: No change (typically), or Checked Out if tracking dwell time.

    • System Logic: Usually used for internal analytics rather than marketing status, but can be mapped if required for Continuing Education (CE) credit tracking.

3. Engagement Phase (Deep Analytics)

  • InEvent Action: Session View Duration (Threshold < 10%)

    • Description: User logs in but watches less than 10% of the content.

    • Marketo Status: Attended - Bounced

    • Success: True (Technically attended, but low value)

    • System Logic: Allows marketers to segment follow-up emails. "Bounced" users might receive a "Watch the Recording" email, while engaged users receive a "Download the Whitepaper" email.

  • InEvent Action: Session View Duration (Threshold > 75%)

    • Description: User watches the majority of the content.

    • Marketo Status: Attended - Engaged

    • Success: TRUE

    • System Logic: These are high-intent leads. This status change should trigger a "Lead Score" increase (e.g., +20 points).

4. Post-Event Reconciliation

  • InEvent Action: No Activity

    • Description: The event has concluded, and the user status remains at "Registered."

    • Marketo Status: No Show

    • Step ID: 30

    • Success: False

System Logic: This is often a manual batch process or an automated "clean up" sync run 24 hours after the event end time. It is critical for calculating accurate "Cost Per Attendee" metrics.

Component 2: Custom Object Schema

Standard Lead fields are flat; they describe the person (Who). They are incapable of describing complex, one-to-many behavioral data (What they did). If a lead attends a three-day conference with 15 sessions, overwriting a "Last Session Viewed" field 15 times results in a massive loss of intelligence.

To address this, the InEvent connector utilizes Marketo Custom Objects. This creates a relational database structure where a single Lead Record (Parent) is linked to multiple Activity Records (Children).

4.1 Custom Object: InEvent Activity

We recommend creating a unified Custom Object to house various interaction types. This reduces the administrative overhead of managing multiple object definitions.

Schema Definition:

  • Object Name: InEvent_Activity

  • API Name: InEventActivity_c

  • Link Field: Lead ID (The foreign key connecting the object to the person)

  • Deduplication Field: Activity_ID (A unique alphanumeric hash generated by InEvent, e.g., evt_123_sess_456_usr_789)

Field Specifications:

Field Friendly Name

API Name

Data Type

Description

Activity Type

activityType

String

Categorizes the record (e.g., "Poll Response", "Session View", "Booth Scan").

Activity Name

activityName

String

The human-readable title (e.g., "Keynote: Future of AI", "Booth: Adobe").

Activity Date

activityDate

Datetime

The UTC timestamp of the interaction.

Activity Value

activityValue

String

The content of the interaction (e.g., the answer to the poll "Option B", or duration "45 mins").

Session ID

sessionId

String

The system ID for the specific session.

Event Name

eventName

String

The name of the parent event.

URL Asset

assetUrl

URL

A direct link to the recording or resource (if applicable).


4.2 Architectural Benefits of Custom Objects

  1. Velocity Scripting in Email: By using Custom Objects, you can utilize Velocity Scripting (#foreach loops) in Marketo emails to print a dynamic list of every session a user attended in their "Post-Event Recap" email.

    • Example: "Hi John, here are the links to the 4 sessions you watched yesterday..."

  2. Advanced Filtering: You can construct "Cross-Filter" logic.

    • Logic: Find all Leads who (Attended Event A) AND (Have an InEvent_Activity where Type is "Poll Response" and Value contains "Ready for Demo").

  3. Lead Scoring 2.0: You can build scoring models that assign points based on the volume of Custom Objects.

Logic: If Lead has > 5 InEvent_Activity records in the past 24 hours, set Urgency to "High".

Component 3: Smart Campaign Triggers & Tokens

Automation within Marketo is driven by the "Smart Campaign" engine. The InEvent connector enables two primary types of triggers: Program Status Changes and Data Value Changes. This section outlines the specific logic blocks required to operationalize the event data.

5.1 Trigger Logic: Real-Time Behavioral Scoring

Behavioral scoring should reflect the intensity of engagement. A user who simply registers is less valuable than a user who attends, who is in turn less valuable than a user who asks a question.

Scenario: The Engagement Ladder

Logic Block 1: Registration (Interest)

  • Smart List Trigger: Program Status is Changed

    • New Status: Registered

    • Program: [Current Event]

  • Flow Step: Change Data Value

    • Attribute: Demographic Score

    • New Value: +5

Logic Block 2: Attendance (Action)

  • Smart List Trigger: Program Status is Changed

    • New Status: Attended

    • Program: [Current Event]

  • Flow Step: Change Data Value

    • Attribute: Behavior Score

    • New Value: +20

Logic Block 3: High Intent (Engagement)

  • Smart List Trigger: Added to Custom Object

    • Object: InEvent_Activity

    • Constraint: activityType is "Poll Response"

    • Constraint: activityValue contains "Sales"

  • Flow Step 1: Change Data Value

    • Attribute: Behavior Score

    • New Value: +50

  • Flow Step 2: Sync Person to SFDC

    • Action: Assign to Queue "Hot Leads"

  • Flow Step 3: Send Alert

    • Recipient: Lead Owner

    • Content: "Lead {{lead.LastName}} requested sales contact via Event Poll."

5.2 Tokenization for Hyper-Personalization

The connector supports the synchronization of custom attributes that can be utilized as tokens in Marketo assets. Using standard Marketo token syntax ({{my.token}} or {{lead.field}}), you can create a seamless user experience.

The "One-Click" Strategy:

To maximize attendance, authentication barriers must be removed.

  1. InEvent Generation: InEvent generates a secure autologin link: https://event.inevent.com/login?token=abc123xyz

  2. Sync: This string is synced to the Marketo field InEvent_Magic_Link.

  3. Marketo Asset: The "Starting Now" email uses the token in the HTML button: <a href="{{lead.InEvent_Magic_Link}}">Join Session</a>.

  4. Result: The user clicks the email and is immediately dropped into the video player, bypassing the password screen. This workflow historically increases attendance rates by 15-20%.

QR Code Integration:

For hybrid events, the check-in process can be streamlined by embedding the user's QR code directly in the email.

  1. Sync: InEvent syncs the image URL of the QR code to InEvent_QR_URL.

  2. Marketo Asset: The "Know Before You Go" email contains: <img src="{{lead.InEvent_QR_URL}}" alt="Your Ticket">.

Result: User opens email at the venue, scans the image, and the badge prints instantly.

Governance: API Limits & Security

For Enterprise Marketo instances, governance of the API pipeline is critical. An uncontrolled integration can consume the daily API quota, causing critical failures in other connected systems (e.g., Salesforce, Drift, Tableau).

6.1 API Quota Management

Marketo enforces a strict daily limit on API calls, typically set at 50,000 calls per rolling 24-hour period for standard instances.

The "Throttling" Strategy:

The InEvent connector employs a sophisticated throttling and batching mechanism to respect these limits.

  1. Priority Queue: "Program Status" updates (Registration/Check-In) are flagged as High Priority. These are sent immediately (1 call per lead) to ensure operational continuity.

  2. Bulk Queue: "Activity Data" (Polls, Q&A, detailed analytics) are flagged as Low Priority. The connector aggregates these records into a CSV buffer. Once the buffer reaches a threshold (e.g., 1,000 records) or a time limit (e.g., 60 minutes), the connector utilizes the Marketo Bulk Import API.

    • Efficiency Gain: Creating 1,000 Custom Object records via the standard REST API requires 1,000 calls. Doing so via the Bulk Import API requires only 2 calls (1 to upload the file, 1 to trigger the import). This results in a 99.8% reduction in API consumption for high-volume datasets.

6.2 Error Handling and Retry Logic

Network instability and API timeouts are inevitable. The connector includes robust error handling:

  • 50x Server Errors: If Marketo returns a 502 (Bad Gateway) or 503 (Service Unavailable), the connector implements an "Exponential Backoff" strategy. It waits 30 seconds, retries. If it fails, it waits 60 seconds, then 120 seconds, up to a maximum of 5 attempts before logging a permanent failure.

  • 6xx Token Errors: As mentioned in Section 2.1, 601 (Token Expired) triggers an automatic refresh flow.

  • 1004 Lead Not Found: If an update is attempted on a lead that has been deleted in Marketo, the system logs the error but does not retry, preventing an infinite loop of failed calls.

6.3 Data Privacy and Compliance (GDPR/CCPA)

The integration is designed to comply with global privacy regulations.

Unsubscribe Propagation (Bi-Directional):

  • Marketo to InEvent: If Unsubscribed is set to True in Marketo, the user is flagged in InEvent. The InEvent mailer will suppress any marketing-related communications to this user. Note: Transactional emails (Password Reset, Payment Confirmation) are generally exempt from this suppression under GDPR "Legitimate Interest" clauses, but this is configurable.

  • InEvent to Marketo: If a user unchecks the "Marketing Permissions" box during the InEvent registration process, the Unsubscribed field is updated to True in Marketo instantly.

Right to Be Forgotten:

If a user submits a deletion request:

  1. Action: The Admin deletes the user in Marketo.

  2. Sync: This does not automatically cascade to InEvent by default (to prevent accidental mass deletions). The Admin must manually anonymize or delete the record in the InEvent Data Privacy dashboard.

Logs: All data transfer logs are retained for 30 days for audit purposes and then permanently purged.

Implementation Standard Operating Procedure (SOP)

This section provides a step-by-step guide for the technical implementation. This procedure should be executed by a Marketo Admin and an InEvent Admin working in tandem.

Prerequisites:

  • Admin access to Marketo (ability to create LaunchPoint Services).

  • Admin access to InEvent (Organization Level).

  • A finalized list of custom fields to be mapped.

Step 1: Create the API User and Role (Marketo)

  1. Navigate to Admin > Users & Roles.

  2. Click Roles > New Role.

  3. Role Name: InEvent API Role.

  4. Permissions: Check the boxes for:

    • Access API

    • Read/Write Assets (for Program access)

    • Read/Write Person (for Lead access)

    • Read/Write Custom Object (if using Component 2)

    • Read/Write Activity

  5. Click Create.

  6. Navigate to Users > Invite New User.

  7. Email: api-inevent@yourdomain.com (This should be a dummy email).

  8. First Name: InEvent; Last Name: Integration.

  9. Role: Select InEvent API Role.

  10. API Only: Check this box (critical).

  11. Click Invite.

Step 2: Configure LaunchPoint Service (Marketo)

  1. Navigate to Admin > Integration > LaunchPoint.

  2. Click New Service.

  3. Display Name: InEvent Native Connector.

  4. Service: Select Custom.

  5. Description: Bi-directional sync for events.

  6. API Only User: Select the user created in Step 1 (api-inevent@yourdomain.com).

  7. Click Create.

  8. Click View Details on the newly created service.

  9. Copy the Client ID and Client Secret to a secure notepad.

  10. Navigate to Admin > Integration > Web Services.

  11. Copy the REST API Endpoint (usually ends in /rest).

Step 3: Establish Connection (InEvent)

  1. Log in to InEvent and navigate to Account > Integrations.

  2. Select Marketo from the CRM list.

  3. Paste the Client ID, Client Secret, and Endpoint URL.

  4. Click Link Account.

  5. Wait for the confirmation message: "Connection Established Successfully."

Step 4: Define Data Mapping (InEvent)

  1. In the Integration settings tab, locate the Field Mapping section.

  2. Standard Fields: Ensure First Name, Last Name, and Email are mapped to their direct counterparts.

  3. Custom Fields: Map any event-specific data (e.g., Ticket Type to Marketo Field: Event Ticket Type).

  4. Warning: Ensure data types match. Do not map an InEvent "Text" field to a Marketo "Date" field, as this will cause sync errors.

Step 5: Program Member Status Mapping (Critical)

  1. Locate the Status Mapping tab.

  2. For the specific event, ensure the dropdowns align with the matrix defined in Section 3.2.

    • Form Submit maps to Registered.

    • Check-In maps to Attended.

    • No Show maps to No Show.

Step 6: Munchkin & Program Association

  1. In Marketo, go to Admin > Munchkin and copy the Munchkin ID (Format: 123-ABC-456).

  2. In InEvent, paste this ID into the Tracking Pixel field. This enables web activity tracking on registration pages.

  3. Select the target Marketo Program from the dropdown list. If the list is empty, click "Refresh Programs" to trigger an API call to fetch the list of available programs from Marketo.

Step 7: Dry Run Validation (Pre-Flight Check)

Never turn on a sync for a live event without a dry run.

  1. Create Test User: Register a user with email test.user+01@yourdomain.com on the InEvent landing page.

  2. Verify Lead Creation: Search for this email in Marketo. It should appear within 60 seconds.

  3. Verify Program Status: Check the "Members" tab of the Marketo Program. The user should be there with status Registered.

  4. Simulate Check-In: In the InEvent backend, manually change the user status to "Checked In."

  5. Verify Status Change: Refresh Marketo. The status should change to Attended.

Verify Custom Object: If configured, check the "Custom Objects" tab on the lead record to see if the activity was logged.

Technical Frequently Asked Questions

1. How does the system handle "Partitions" and "Workspaces" in Marketo?

Answer: Marketo Workspaces are strict boundaries. The API User created in Step 1 is assigned a Role. That Role has access to specific Workspaces. If your event program lives in the "EMEA Workspace," but the API User only has access to the "North America Workspace," the connector will not be able to see the program or sync leads to it.

  • Solution: Ensure the API Role is granted access to all relevant Workspaces where event programs will reside. Alternatively, create separate API Users for different regional workspaces if strict data segregation is required.


2. What happens if I manually change a status in Marketo? Will InEvent overwrite it?

Answer: InEvent treats itself as the "Source of Truth" for event activity. If a user scans a QR code, InEvent will push the Attended status. If a marketer manually changes that person back to Registered in Marketo, InEvent will not automatically revert it unless a new trigger event occurs (e.g., they scan the code again). However, the next time a full sync runs (if "Force Sync" is selected), the status may be overwritten to match the reality of the event data. It is recommended to avoid manual status manipulation in Marketo during the active event window.


3. How are "Cookies" and "Known Web Activity" handled?

Answer: The connector supports the Munchkin association. When a user registers on an InEvent page, the InEvent form submits the data along with the browser's cookie info (if Munchkin is enabled). This allows Marketo to associate previous anonymous web activity (e.g., visiting the pricing page 3 times last week) with the newly created known lead. This is vital for "Lead Lifecycle" reporting.


4. Can we map one InEvent event to multiple Marketo Programs?

Answer: No. The architecture is strictly 1:1 (One InEvent Project to One Marketo Program). This ensures data cleanliness. If you have a complex event structure (e.g., a Parent Event with 5 sub-tracks), we recommend syncing to a single Parent Program in Marketo and utilizing "folders" or "categories" within Custom Objects to distinguish between tracks, rather than creating 5 separate programs which complicates the sync logic.


5. What is the maximum file size for the Bulk Import?

Answer: Marketo’s Bulk Import API has a hard limit of 10MB per file. The InEvent connector automatically segments data. If a batch of poll responses exceeds 10MB, the connector splits it into multiple files (Chunking) and queues them sequentially. No configuration is required by the user to handle this; it is native to the connector's logic.

6. Does the connector support "Person Partitions" (Lead Partitions)?

Answer: Yes. When a new lead is created via the API, Marketo’s internal "Lead Partition Assignment Rules" will automatically route the lead to the correct partition based on the data provided (e.g., Country or Domain). The connector does not force a partition; it respects the logic defined in your Marketo instance. However, the API User must have visibility into the partition where the lead lands, or it will return a "Lead Not Found" error on subsequent updates.

7. Can I sync "Guest" data (people who did not register but attended)?

Answer: Yes. If you allow "Walk-Ins" at a physical event who register at the kiosk, InEvent captures their data and pushes it to Marketo as a New Lead with the status Attended immediately. The Acquisition Date will be the timestamp of their walk-in.

Recent materials

  • All categories
  • E-books
  • Articles
  • Videos
  • Webinars

The complete platform for all your events

Pedro Goes

goes@inevent.com

+1 470 751 3193

InEvent InEvent InEvent InEvent

We use cookies to improve your website experience and provide more personalized services to you across our platform.

To find out more about the cookies we use, see our Privacy Policy.