Industry
Event Management / Conference Technology
Region
United States
Team Size
Mid-Market Operations Team
Event Volume
Multi-track Conferences + Board Events
Platform
Salesforce CRM + Meetmax API
Delivery
Full Integration Build — Completed
4
Form types fully automated — Delegate, Sponsor, Board Event, Additional Attendee — each follows its own processing path
0
Manual data entry steps — every form submission now creates Salesforce records and syncs to Meetmax without human intervention
100%
Real-time Meetmax sync — attendee records pushed via OAuth REST API immediately after Salesforce Attendee creation
4
Salesforce objects auto-created per submission — Account, Contact, Opportunity, and Attendee — from a single form entry
3
Opportunity match scenarios handled — Prefill (existing ID), Unique Code match, or brand-new creation — no dropped records
0
Code deployments needed to toggle processing — the Trigger_Control__c master switch lets ops teams pause and resume instantly

Challenge vs. Solution

Six Integration Gaps That Blocked Seamless Event Registration — and Six Fixes That Resolved Them

✕ Before — The Challenges 6 Problems
No automatic record creation: form submissions arrived in a vacuum — the operations team had to manually create Account, Contact, Opportunity, and Attendee records in Salesforce for every registration.
Meetmax sync was entirely manual: attendee data had to be re-entered or exported into Meetmax separately, introducing delays that broke event scheduling and meeting management workflows.
Duplicate Attendee records piled up: without a deduplication mechanism, the same person registering across multiple opportunities created multiple conflicting Attendee records in Salesforce.
Placeholder TBA/TBD entries polluted data: incomplete registrations with "TBA" or "TBD" in name and email fields were creating junk records that required manual cleanup after every event cycle.
No sync visibility or error tracking: when a Meetmax sync failed, the team had no record of which attendees hadn't synced — failures were invisible until the event itself exposed missing attendees.
Hardcoded configuration required code changes: updating role IDs, stage names, or API credentials meant raising a developer ticket and deploying code to production — slowing down every configuration change.
✓ After — What We Built 6 Fixes
End-to-end Apex processing per form type: we built dedicated processing classes for Delegate, Sponsor, Board Event, and Additional Attendee forms — each creates the correct Salesforce records automatically the moment a submission arrives.
AttendeeTrigger fires real-time Meetmax sync: we built an Apex after-insert trigger that pushes attendee data to Meetmax via OAuth-authenticated REST API immediately after the Attendee record is created in Salesforce.
Composite-key deduplication prevents duplicates: we implemented a composite key check (Main Registration + Opportunity Name + First Name + Last Name) before every Attendee creation — duplicates are blocked at the trigger level.
TBA/TBD blocking skips placeholder entries automatically: we added a name-and-email scan at the trigger layer so any submission containing "TBA" or "TBD" is skipped entirely — no junk records are created.
Sync_Status__c field captures every outcome: every Attendee record now stores its Meetmax sync result (Success or Failed) and the Attendee_ID_Meetmax__c returned by Meetmax — full traceability for the ops team at a glance.
Custom Settings and Labels make every value configurable: role IDs, stage names, field mappings, and API credentials are all stored in custom settings and labels — admins update values through Salesforce Setup, no code deployment required.

What We Did

Five Phases That Took From Manual Data Chaos to a Fully Automated Registration Pipeline

Discovery

Mapped All Four Registration Paths Before Writing a Line of Code

We analysed the complete form submission journey for each registration type — Delegate, Sponsor, Board Event, and Additional Attendee — documenting exactly which Salesforce objects each form needed to create and how they differed. This mapping identified the three Opportunity scenarios (Prefill, Unique Code, New) and the edge cases — same-address flags, parent-company reuse, TBA placeholders — that would break a generic integration.

Process Mapping Object Relationship Design Salesforce Custom Objects Meetmax API Review
Architecture

Designed a Configuration-First Architecture with Zero Hardcoded Values

We built the entire integration around custom settings — Form_Entry_To_Account_Mapping__c for field mappings, Salesforce_to_Meetmax__c for sync config, and Meetmax__c for encrypted API credentials — so every value is editable through Salesforce Setup. Custom Labels store Meetmax role IDs and Salesforce stage names, and Trigger_Control__c provides a two-checkbox master kill switch to pause all processing without a deployment.

Salesforce Custom Settings Custom Labels Trigger_Control__c Encrypted Credential Storage
Core Build

Built FormEntryTrigger — Routes Every Submission to the Right Processing Path

We built FormEntryTrigger as the routing layer — on every Form_Entry__c insert it reads the record type and dispatches to the correct processing class: DelegateProcessor, SponsorProcessor, BoardEventProcessor, or AdditionalAttendeeProcessor. Each processor creates Account, Contact, and Opportunity records using the configurable field mappings, handles the three Opportunity match scenarios, and applies TBA/TBD blocking before attempting Contact or Attendee creation.

Apex Triggers Apex Classes Form_Entry__c Account / Contact / Opportunity Deduplication Logic
Integration

Built AttendeeTrigger — Real-Time OAuth Sync to Meetmax REST API

We built AttendeeTrigger as an after-insert trigger on the Attendee__c object that fires immediately after each Attendee record is created. It retrieves OAuth credentials from the encrypted Meetmax__c custom setting, constructs the REST API payload with the correct Meetmax role ID (Employee for Delegates, Board Member for Board Events), posts to the Meetmax endpoint, and writes the returned Attendee_ID_Meetmax__c and Sync_Status__c back to the record — creating a full audit trail for every sync attempt.

Meetmax REST API OAuth Authentication Attendee__c Object Sync_Status__c Attendee_ID_Meetmax__c
Hardening

Added Edge-Case Handling and Operational Controls for Production Readiness

We hardened the integration against the edge cases that break event operations at scale: composite-key deduplication blocks duplicate Attendees before they're created, a Before Insert trigger copies billing address automatically for Board Event same-address registrations, Additional Attendee processing reuses the parent company Account rather than creating duplicates, and the Trigger_Control__c kill switch lets the ops team pause either trigger independently — all without touching code.

Composite-Key Deduplication Before Insert Trigger TBA/TBD Blocking Additional Attendee Logic Billing Address Copy

The operations team was rebuilding attendee lists by hand before every event — cross-referencing form submissions, Salesforce, and Meetmax manually. Now the data flows automatically: a registration comes in, Salesforce has the record, Meetmax has the attendee. The team doesn't touch it.

— Twopir Integration Lead · US Event Management Platform · 2024

Key Outcomes

What Changed — In Numbers and in Practice

4 paths

One integration handles four distinct registration types end-to-end

Delegate, Sponsor, Board Event, and Additional Attendee forms each follow a separate, correctly configured processing path — no form type is forced through a generic handler that creates wrong or missing records.

Real-time

Attendees reach Meetmax the moment they register

The AttendeeTrigger fires on Attendee insert and pushes data to Meetmax via OAuth REST API immediately — event scheduling and meeting management in Meetmax are never waiting on a manual export.

Zero dupes

Composite-key deduplication prevents conflicting Attendee records

Every Attendee creation is checked against Main Registration + Opportunity Name + First Name + Last Name before it's written — duplicate records that previously required manual cleanup no longer make it into the system.

Full trail

Every sync attempt is logged against the Attendee record

Sync_Status__c (Success/Failed) and Attendee_ID_Meetmax__c are written back to every Attendee record — the operations team can see exactly which attendees synced, which failed, and what Meetmax ID was assigned.

0 deploys

Configuration changes require no code deployment

Role IDs, stage names, field mappings, and API credentials are all managed through Salesforce Custom Settings and Labels — admins update values in Setup without raising a developer ticket or deploying to production.

Instant off

Operations team can pause either trigger in under 30 seconds

Trigger_Control__c provides two independent checkboxes — isActive__c and Attendee_Trigger__c — giving the ops team a safe, immediate way to pause processing during data migrations or maintenance windows without touching code.

Running a Similar Event Management Operation?

If your team is manually moving registration data between your CRM and attendee platform, we can fix that. We'll audit your current registration flow and deliver a clear integration architecture — in 5 business days, no commitment required. Twopir works with event platforms across the US, UK, and Australia with EST, GMT, and AEST coverage.


Technologies Used

The Tools and Techniques Behind This Engagement

Salesforce CRM Apex Triggers Apex Classes Meetmax REST API OAuth 2.0 Authentication Form_Entry__c (Custom Object) Attendee__c (Custom Object) Salesforce Custom Settings Salesforce Custom Labels Trigger_Control__c Salesforce Campaign Composite-Key Deduplication Before/After Insert Triggers Encrypted Credential Storage

Stop rebuilding data by hand. Automate the whole flow.

Twopir has spent 12+ years building Salesforce integrations for 500+ clients across the US, UK, Australia, UAE, and Canada — and we've seen every variation of the manual-data-entry problem. We know how to eliminate it. Let us show you.

12+ Years · 500+ Clients · Salesforce Partner · HubSpot Partner · US · Canada · UK · UAE · Australia · New Zealand