Events live on WordPress because marketing likes the pages. Pipeline truth lives in Salesforce because sales lives there. The broken bridge is a CSV export every Monday morning. The working bridge is Salesforce Campaign Member sync from WordPress event registration — RSVP, confirm, attend, no-show, and cancel mapped to Campaign Member statuses your reports already understand.
HostHob builds that sync for EU B2B teams. Salesforce entry points: WordPress Salesforce integration agency, Leads API vs plugin, portal boundaries in Experience Cloud, NL Salesforce koppeling.
What “Campaign Member from WordPress” requires
- A Salesforce Campaign per event (or a parent/child model you already use).
- Identity resolution: email → Lead or Contact, with duplicate rules respected.
- Status model: Sent / Responded / Registered / Attended / No-Show — aligned to your org’s picklist, not inventing parallel values.
- Updates when WordPress registration changes after the first submit.
- Optional: UTM and asset source on Lead/Contact without overwriting sales-owned fields.
The WordPress side may be The Events Calendar, a custom CPT, Gravity Forms with event products, WooCommerce tickets, or a Laravel-assisted registration app beside WordPress — hybrid vs headless.
Why plugins stall
Generic Salesforce form plugins create Leads. They rarely maintain Campaign Member rows through status transitions, waitlists, and check-in apps. Duplicate Leads appear when the same email registers for three webinars under slightly different names. Attendance scanned at the door never flows back, so ROI reports lie. Hyperforce or EU residency does not fix that process gap — see our Hyperforce-minded integration notes in the Salesforce cluster.
Architecture
- Event master data — WordPress event ID maps to Salesforce Campaign ID in config.
- Registration event → queue → upsert Lead/Contact → upsert Campaign Member with status.
- Check-in / no-show feed from door app or webinar platform webhook into the same member row.
- Idempotency on registration ID so double-clicks do not double-member.
- Failure visibility when duplicate rules block create — ops sees it, not a silent thank-you page.
Workers in Laravel scale when event season spikes — Laravel API partner portal patterns, API agency Europe.
Delivery checklist
- Campaign status dictionary signed by marketing ops.
- Duplicate rule behaviour documented with Salesforce admin.
- Staging: new Lead, existing Contact, waitlist promote, cancel, attend, no-show.
- Webinar vendor webhook verified (Zoom/Teams/etc. as applicable).
- Report sample: Campaign ROI using Member statuses after sync.
- Runbook for creating next event mapping without code redeploy.
When not to hire us
If you run one annual event and CSV is acceptable to finance, keep CSV. If registration already lives entirely in Salesforce or Marketing Cloud, do not force WordPress into the path. If duplicate rules are broken org-wide, fix those with your SI before sync amplifies mess.
Hire us when WordPress (or hybrid) registration volume makes exports painful, or when attendance must update Members the same day for sales follow-up.
Privacy and event data
Dietary notes, accessibility needs, and badge photos are sensitive. Field minimisation belongs in the Salesforce map — do not push every WordPress field into Campaign Member custom fields “for convenience.” Retention for event PII should be shorter than lifelong CRM contact retention where policy allows. DSAR must find registration rows in WordPress and Member history in Salesforce.
Failure modes
- Thank-you page creates Member before payment for paid tickets succeeds.
- Child Campaigns unused; all events dump into one everlasting Campaign.
- Check-in tool writes a different email format than registration (plus suffixes, aliases).
- Marketing Cloud journeys enroll on old statuses while Members already moved.
- Experience Cloud event calendars diverge from public WordPress pages — clarify source of truth.
Sales follow-up design
Attended vs no-show should change tasks or cadence — otherwise sync is reporting-only. We align with sales managers on what automation is allowed post-event so engineering is not blamed for spam. Optional company association helps account-based teams see which accounts showed up.
Commercial shape
Cost tracks event platforms in play, paid vs free registration, webinar vendor count, and whether Leads or Contacts are primary. A single webinar series is a slice; a multi-city roadshow with door hardware is a programme. Discovery produces the Campaign template and Member status map before code.
Bring: event plugin list, sample Campaign, duplicate rules summary, and the last painful export. Related reading: Salesforce WP agency · Experience Cloud · Rotterdam API WordPress.
Waitlists, capacity, and paid tickets
Free webinars and paid conferences share Campaign Member patterns but differ in payment timing. For paid tickets, Campaign Member creation should follow successful payment or intentional “reserved pending payment” statuses your org already uses — inventing a parallel status in WordPress that Salesforce reports ignore helps no one. Waitlist promotions must update the same Member row, not create a second person. Capacity changes on WordPress need a sync rule: do cancelled waitlist people become Removed or a custom status sales still wants to nurture?
Multi-session events (workshops inside a summit) fit parent/child Campaigns. WordPress registration UX may feel like one form while Salesforce needs multiple Member rows. We map that explicitly in discovery so engineering does not flatten sessions into a single note field. Badge print vendors and door scanners often introduce yet another email normalisation problem; we define canonical email handling before event week.
Webinar platforms send attended webhooks late or twice. Idempotent Member updates keyed by Campaign ID + Contact/Lead ID + status transition prevent oscillation between Attended and Registered. When the vendor cannot send webhooks, a scheduled attendance CSV import with the same idempotency rules beats manual Salesforce edits at midnight.
Marketing Cloud or Account Engagement journeys should enroll from Member status, not from a parallel WordPress list pulled via CSV. Dual journeys are how attendees receive three follow-ups and a spam complaint. We inventory automations that key off Campaigns during the same workshop as status dictionaries. After go-live, a single “event ops” channel watches dead letters during the first two live events — hypercare is part of delivery, not optional goodwill.
Measure success as time from door scan to Member=Attended, percent of registrations with Member rows within five minutes, and duplicate Lead rate per event. Those numbers beat vanity registration counts on the WordPress dashboard. When they are healthy, sales trusts the Campaign report again — which was the point of retiring Monday spreadsheets.
Attribution, UTMs, and Campaign influence
Campaign Member sync solves registration truth; it does not automatically fix multi-touch attribution. UTMs captured on WordPress should land on Lead/Contact fields your influence models already use, without overwriting sales-owned source fields on every webinar. We define first-touch versus latest-touch rules with RevOps in the same workshop as Member statuses. Otherwise every event looks like it originated the account.
Internal staff registrations pollute reports. We filter by email domain or a “internal” checkbox mapped to a Member status or exclusion list. Press and analyst invites may need a separate Campaign. Spotting these categories early prevents executives from declaring webinars useless because half the attendees were employees.
Accessibility and dietary fields stay out of Salesforce when possible; store them in WordPress with short retention and share with venue ops via secure export. Pushing every operational detail into CRM custom fields creates retention and access-control debt that Hyperforce residency does not erase. Event success metrics belong beside privacy metrics — both are delivery outcomes.
After the first live event using the sync, we run a retrospective: duplicate rate, dead letters, sales follow-up latency, and any status values that confused reports. Adjust the dictionary once; do not reinvent statuses per event manager. Consistency is what makes Campaign history comparable across quarters.
Check-in hardware and last-metre reality
Badge scanners, QR codes on tickets, and staff with tablets all invent new email strings. We normalise to lowercase, trim, and optionally resolve plus-aliases when your org agrees. When resolution fails, the door app must allow search by registration code that WordPress issued and Salesforce stored on the Member — never “just create a new Lead at the door” without a supervised flow. Unsupervised door creates destroy Campaign hygiene for reporting season.
Hybrid remote-plus-in-person events need two attendance signals that still map to one Member vocabulary. A person who attended online and in person should not flip statuses endlessly; define a precedence rule. Recordings consumed later may be download timeline events in HubSpot or a separate Campaign — pick one narrative for revenue meetings.
Budget for a rehearsal day: register test users, scan them, fail a webhook, replay the queue, and confirm reports. Event week is too late to learn that the Connected App user cannot update Member status. That rehearsal is a delivery deliverable, not a nice-to-have.
Related: Salesforce WP · API vs plugin · SF koppeling · Experience Cloud · API agency Europe