Salesforce

Sync registrations and check-ins to Salesforce leads, contacts, and campaigns.

Sync your event registrations and check-ins straight into Salesforce. Every attendee shows up as a Lead or Contact with activity on their timeline, and you can roll the whole event up to a Salesforce Campaign for ROI reporting.

What gets synced

When someone registers for one of your events, Eventship writes the following to your Salesforce org:

  • Lead or Contact — we look up the attendee by email. If they already exist as a Lead or Contact, we use that record. Otherwise we create a new Lead with LeadSource = Eventship.
  • Activity Task — a completed Task is added to the Lead or Contact's activity timeline with the subject Registered: {Event Title}.
  • CampaignMember (optional) — if the event is linked to a Salesforce Campaign, the attendee is added to the campaign with the registered status you chose when you linked the campaign (Salesforce's universal default is Sent).

When the attendee checks in at your event, we add a second Checked-in: {Event Title} Task to their timeline and update their CampaignMember to the attended status you chose (Salesforce's universal default is Responded).

This means anyone on your sales or marketing team can open a Lead in Salesforce and see exactly which events that person has registered for and attended — directly inside Salesforce, no context-switching needed.

Before you connect — supported Salesforce editions

Eventship syncs through Salesforce's REST API, which Salesforce only enables on certain editions. Check which edition you're on under Setup → Company Information → Organization Edition before you start.

Salesforce editionWorks with Eventship?
Enterprise, Unlimited, PerformanceYes
Developer Edition (free)Yes — great for testing
Professional EditionOnly with the paid API add-on from Salesforce
Starter Suite, Pro Suite, Essentials, GroupNo — these editions don't expose the API

If you're on Starter Suite, Pro Suite, Essentials, or Group, the integration won't work no matter what you configure on the Salesforce side — those editions don't expose programmatic access at any tier. You'd need to upgrade to Professional (with the API add-on) or Enterprise before connecting.

If you're on Professional and unsure whether your org has the API add-on, the fastest check is to try connecting. If your org doesn't have it, sync attempts will fail with API_DISABLED_FOR_ORG and you can contact your Salesforce account executive to add it.

Connect Salesforce

Connecting is a two-step process: a one-time package install in your Salesforce org, then the OAuth connection from Eventship. We walk you through both when you click Connect.

Step 1 — Install the Eventship package in your Salesforce org

Eventship ships as a Salesforce-managed package. A Salesforce admin needs to install it once per org before anyone in that org can OAuth-connect from Eventship. Once installed, every host on Eventship pointing at that same org can connect without repeating this step.

  1. Go to your host dashboard → Integrations tab → click Connect on the Salesforce card
  2. Eventship opens an install modal. Click Open Salesforce install page — make sure the tab that opens is signed in as a Salesforce admin (or send the install URL to your admin)
  3. On the Salesforce install screen, choose Install for All Users and approve the install
  4. Once the install completes, in Salesforce go to Setup → External Client Apps → Eventship → Policies. Confirm Permitted Users is set to All users may self-authorize (it should be by default).

Connecting a sandbox? Eventship currently connects to production Salesforce orgs only. If you need to test the integration in a sandbox before going live, email [email protected] and we'll set you up.

Step 2 — Connect from Eventship

  1. Back in the Eventship install modal, click Connect now
  2. You'll be sent to Salesforce to sign in and approve access. Sign in with the Salesforce user you want Eventship to act as
  3. After you approve, you'll be redirected back to Eventship and the card will show Connected

The connection is at the host level, not per-event. Once connected, every future registration and check-in for that host's events syncs automatically.

If you manage multiple hosts on Eventship, each one connects separately — they can point to the same Salesforce org or to different orgs. Each host only needs to do Step 2 (the package only has to be installed once per Salesforce org).

Permissions

  • On Eventship: whoever connects the integration must be an owner or admin of the host
  • For installing the package (Step 1): a Salesforce System Administrator or any user with the Download AppExchange Packages permission
  • For the user who completes the OAuth (Step 2): API access enabled on their profile, plus read and create permissions on Lead, Contact, Task, and Campaign (and CampaignMember if you want to use Campaigns)

The user installing the package and the user completing the OAuth don't have to be the same person. A common pattern is: Salesforce admin installs the package, then a marketing/RevOps user does the OAuth so the integration acts as them.

Link an event to a Salesforce Campaign

The base sync (Lead/Contact + Task) runs automatically with no extra setup. To roll an event up to a Salesforce Campaign, link the Campaign from inside the event:

  1. Open your event in the dashboard and click Manage
  2. Click Sync, then click Salesforce
  3. Paste the Campaign Id into the Salesforce campaign id field (it starts with 701 and is 15 or 18 characters long) and click Validate
  4. Eventship checks the Id against your connected org. If it's valid, we load the campaign's allowed CampaignMember statuses
  5. Pick the status to write when someone registers and the status to write when someone is checked in. We pre-select best guesses (e.g. labels that contain "Registered" or "Attended"), but you can pick any status defined on the campaign — CampaignMember.Status is a per-campaign restricted picklist, so the value has to match one already configured in Salesforce
  6. Click Save

If you haven't customized CampaignMember statuses on your campaigns, the universal Salesforce defaults Sent (registered) and Responded (attended) are always available and will be selected for you. Once linked, every confirmed registration on the event gets a CampaignMember record at the registered status, and check-ins promote that record to the attended status.

Where to find a Campaign Id in Salesforce

In Salesforce, open the Campaign you want to use. The Campaign Id is in the URL:

https://your-org.lightning.force.com/lightning/r/Campaign/701XXXXXXXXXXXXXXX/view
                                                       ^^^^^^^^^^^^^^^^^^
                                                       this is the Campaign Id

Or in Classic, click View Campaign Detail and copy the Id from the URL.

Backfill existing registrations

When you add a Campaign Id to an event that already has registrations, Eventship automatically backfills the previous attendees into the Campaign. Each registration is processed individually so a single failure doesn't block the rest.

Switching the linked campaign

Once a campaign is linked, the Campaign Id is locked — you can update the registered/attended status mappings, but you can't swap the Id directly. Swapping would orphan the CampaignMember rows already written to the original campaign and break the per-campaign status mappings. To point an event at a different campaign, Unlink first (which stops future writes but leaves already-synced records in Salesforce as-is), then link the new Campaign Id.

Monitor sync status

Once a campaign is linked, the Salesforce sub-drawer (Manage → Sync → Salesforce) shows live sync stats for that event:

  • How many registrations have synced successfully
  • How many are pending
  • How many failed (with the error from Salesforce)
  • How many have been marked as attended

If a sync fails — for example, because of a Salesforce duplicate rule that needs manual review, or because a required field is missing on Lead — you can click Retry on the failed row to re-queue it. Most failures are transient and clear up on their own; the retry button is there for the cases that don't.

Disconnect Salesforce

Disconnecting stops all future syncing for that host's events. To disconnect:

  1. Go to the Integrations tab in your host dashboard
  2. Click Disconnect on the Salesforce card
  3. Confirm

Eventship revokes its refresh token at Salesforce and deletes the stored credentials. Records that were already synced remain in Salesforce — disconnecting only stops future writes. Reconnecting later picks up where you left off.

You can also revoke access from inside Salesforce: go to Setup → External Client App OAuth Usage and revoke Eventship from the list. The next time we try to sync, the call will fail and the integration will show as disconnected on Eventship. Revoking OAuth access doesn't uninstall the package itself — to fully remove Eventship from Salesforce, also go to Setup → Installed Packages and uninstall the Eventship package.

Security & data flow

  • Connections use OAuth 2.0 — Eventship never sees or stores your Salesforce password
  • Refresh tokens are scoped to the host that connected them — one connection per host, with no cross-host visibility
  • All API calls go through Eventship's backend, never directly from the browser, so your credentials are never exposed to attendees or to other hosts
  • Each sync is queued asynchronously so a slow Salesforce response can't block someone from registering for your event
  • Failures are logged with the Salesforce error message and surfaced in the sync status panel

Troubleshooting

"Salesforce integration is not configured on this environment." Salesforce isn't set up on your Eventship environment yet. Email [email protected].

"Invalid Campaign Id" when validating. The Id either isn't 15/18 characters starting with 701, or it doesn't exist in the Salesforce org you connected. Double-check you're copying the Id from the same org you connected to Eventship — Campaign Ids from a different org (for example, a sandbox you also have access to) won't resolve.

Registrations show as failed with "DUPLICATE_VALUE" or "DUPLICATES_DETECTED." Most duplicate-rule cases are handled automatically — for Block-mode Lead duplicate rules we fall back to the existing matched Lead or Contact, and for CampaignMember uniqueness collisions we recover the existing CampaignMember. If a sync still surfaces one of these errors, the rule didn't return a matched record we could fall back to. Resolve the duplicate in Salesforce, then click Retry on the failed row.

Registrations show as failed with `API_DISABLED_FOR_ORG`. Your Salesforce edition doesn't include REST API access. See Before you connect — supported Salesforce editions above. Starter Suite, Pro Suite, Essentials, and Group editions can't be made to work — they need an upgrade. Professional Edition needs the paid API add-on from your Salesforce account team. Enterprise / Unlimited / Performance / Developer should work out of the box; if you see this on one of those, double-check the connecting user's profile has API Enabled under System Permissions.

Sync stopped working out of nowhere. The most common cause is that the Salesforce user who connected the integration was deactivated or had their permissions changed. Reconnect with an active user who has API access.

"Eventship isn't installed in your Salesforce org yet" / `OAUTH_EC_APP_NOT_FOUND`. The Eventship package hasn't been installed in the Salesforce org you're trying to connect, or the install hasn't fully propagated yet. Open the install link from the Connect modal in a tab signed in as a Salesforce admin, complete the install, wait about a minute, then try Connect again. If you (or your admin) just installed it within the last few minutes, give Salesforce a few more minutes to propagate the OAuth registry — this can occasionally take 5–10 minutes after the install screen says "Install Complete".

The OAuth screen returned an "approval error" or wouldn't let me click Allow. In Setup → External Client Apps → Eventship → Policies, set Permitted Users to All users may self-authorize and try again. This is set automatically when the package is installed, but org policies can override it.

A Lead I expected to be a Contact got created as a Lead (or vice versa). Eventship trusts whatever Salesforce returns. If you have a duplicate rule that converts new Leads into existing Contacts on insert, the activity Task and CampaignMember will attach to the Contact, not a new Lead.

Questions?

Email [email protected]. We can help you map your event flow into your Salesforce setup and troubleshoot any sync issues.

Was this article helpful?

Let us know if this article answered your question.