Skip to main content

Campaign Events, Tickets & Registrations - Field Mapping

Salesforce Objects:
  • wegive__Event__c (custom object - Events)
  • wegive__Event_Ticket__c (custom object - Tickets)
  • wegive__Event_Registration__c (custom object - Registrations)
WeGive Models:
  • CampaignEvent
  • CampaignEventTicket
  • CampaignEventRegistration

Overview

This document describes how event, ticket, and registration data syncs between WeGive and Salesforce. These objects work together to manage event-based fundraising:
  • Campaign Events - Define the event details, location, dates, and settings
  • Event Tickets - Define ticket types, pricing, and availability for an event
  • Event Registrations - Track who registered for which tickets and in what quantities
Note: These features require the WeGive managed package to be installed in Salesforce, which includes the custom event objects.

Part 1: Campaign Events

Salesforce Object: wegive__Event__c
WeGive Model: CampaignEvent

How Campaign Event Data Syncs

Direction

  • Import from Salesforce - Data imports from Salesforce into WeGive only
  • Export to Salesforce - Data exports from WeGive to Salesforce only
  • Both Ways - Data syncs in both directions

Mapping Types

  • Hard-coded - Built into the integration logic and cannot be changed

Sync Triggers - Events

From WeGive to Salesforce (Export)

Campaign Event data is exported from WeGive to Salesforce when:
  • Event Created: A new event is created in WeGive
  • Event Updated: An existing event is modified in WeGive (e.g., name changed, dates updated, location changed, settings modified)
The export happens automatically after the create or update action in WeGive.

From Salesforce to WeGive (Import)

Campaign Event data is imported from Salesforce to WeGive based on:
  • Last Modified Date: WeGive periodically polls Salesforce for Events that have been modified since the last sync
  • Sync Frequency: The integration checks for updated Events on a scheduled basis (frequency varies by integration configuration)
  • Modified Field Tracking: Only Events with a LastModifiedDate newer than the last successful sync are pulled into WeGive

Complete Field Mapping - Events

Salesforce FieldWeGive FieldWeGive API FieldDirectionTypeNotes
IdSalesforce IDsalesforce_idImport from SalesforceHard-codedSalesforce’s unique identifier for this event
NameEvent NamenameBoth WaysHard-codedDisplay name of the event
wegive__WeGive_Id__cWeGive Event IDidExport to SalesforceHard-codedWeGive’s unique identifier
wegive__Description__cDescriptiondescriptionBoth WaysHard-codedDetailed description of the event
wegive__Location__cLocation TypelocationBoth WaysHard-coded”irl” (in-person) or “virtual”
wegive__Location_Address__cLocation Addresslocation_address.fullBoth WaysHard-codedFull physical address for in-person events
wegive__Location_URL__cLocation URLlocation_urlBoth WaysHard-codedVirtual event URL/link
wegive__Start_Date__cStart Datestart_dateBoth WaysHard-codedEvent start date
wegive__End_Date__cEnd Dateend_dateBoth WaysHard-codedEvent end date
wegive__Timezone__cTimezonetimezoneBoth WaysHard-codedEvent timezone
wegive__Slug__cURL SlugslugBoth WaysHard-codedURL-friendly identifier
wegive__Access_Type__cAccess Typeaccess_typeBoth WaysHard-codedPublic or private event
wegive__Max_Capacity__cMax Capacitymax_capacityBoth WaysHard-codedMaximum number of attendees
wegive__Has_Tickets__cHas Ticketshas_ticketsBoth WaysHard-codedWhether tickets are available
wegive__Ask_Donations__cAsk for Donationsask_donationsBoth WaysHard-codedWhether to ask for donations during registration
wegive__Company_Registrations__cAllow Company Registrationcompany_registrationsBoth WaysHard-codedWhether companies can register
wegive__One_Ticket_Per_Person__cOne Ticket Per Personone_ticket_per_personBoth WaysHard-codedLimit one ticket per registrant
wegive__Show_Registration_Activity__cShow Registration Activityshow_registration_activityBoth WaysHard-codedDisplay recent registrations
wegive__Show_View_Events__cShow View Eventsshow_view_eventBoth WaysHard-codedDisplay event details publicly
wegive__Show_View_Tickets__cShow View Ticketsshow_view_ticketsBoth WaysHard-codedDisplay ticket options publicly
wegive__Is_Opened__cIs Openis_openedBoth WaysHard-codedWhether registration is currently open
wegive__Require_Registration_Waiver__cRequire Waiverrequire_registration_waiverBoth WaysHard-codedWhether attendees must sign a waiver
wegive__Registration_Success_Title__cSuccess Titleregistration_success_titleBoth WaysHard-codedTitle shown after successful registration
wegive__Registration_Success_Description__cSuccess Descriptionregistration_success_descriptionBoth WaysHard-codedMessage shown after successful registration
wegive__DS_Template_Id__cDocuSign Template IDds_template_idBoth WaysHard-codedFor waiver/document signing integration

Important Notes - Events

Location Types

Events can be either in-person or virtual:
  • In-Person (IRL): Uses wegive__Location_Address__c for the physical address
  • Virtual: Uses wegive__Location_URL__c for the meeting/streaming link
  • The location field determines which location field is populated

Date and Timezone

Events include timezone information to handle multi-timezone scenarios:
  • Start and end dates are formatted as Y-m-d
  • Timezone is stored separately to ensure correct local time display
  • This allows organizations to manage events across different time zones

Registration Settings

Multiple boolean settings control event registration behavior:
  • has_tickets - Whether ticketed registration is available
  • one_ticket_per_person - Prevents bulk ticket purchases
  • company_registrations - Allows organization-level registration
  • ask_donations - Prompts for donations during registration
  • require_registration_waiver - Requires legal waiver acceptance

Visibility Settings

Control what information is publicly displayed:
  • show_registration_activity - Shows recent registrations for social proof
  • show_view_event - Makes event details publicly visible
  • show_view_tickets - Makes ticket information publicly visible
  • is_opened - Whether registration is currently accepting new registrants

URL Slug

The slug field creates a unique URL for the event page:
  • Example: wegive.com/events/annual-gala-2025
  • Slugs must be unique within the organization
  • Used for creating shareable event page links

Part 2: Event Tickets

Salesforce Object: wegive__Event_Ticket__c
WeGive Model: CampaignEventTicket

How Event Ticket Data Syncs

Direction

  • Import from Salesforce - Data imports from Salesforce into WeGive only
  • Export to Salesforce - Data exports from WeGive to Salesforce only
  • Both Ways - Data syncs in both directions

Mapping Types

  • Hard-coded - Built into the integration logic and cannot be changed

Sync Triggers - Tickets

From WeGive to Salesforce (Export)

Event Ticket data is exported from WeGive to Salesforce when:
  • Ticket Created: A new ticket type is created in WeGive
  • Ticket Updated: An existing ticket is modified in WeGive (e.g., price changed, limit updated, name changed)
Prerequisites for Creating Tickets: Before creating a ticket in Salesforce, the integration ensures:
  1. Event exists in Salesforce: The parent event must have a salesforce_id
The integration will automatically push the event if it doesn’t have a Salesforce ID yet.

From Salesforce to WeGive (Import)

Event Ticket data is imported from Salesforce to WeGive based on:
  • Last Modified Date: WeGive periodically polls Salesforce for Tickets that have been modified since the last sync
  • Sync Frequency: The integration checks for updated Tickets on a scheduled basis
  • Modified Field Tracking: Only Tickets with a LastModifiedDate newer than the last successful sync are pulled into WeGive

Complete Field Mapping - Tickets

Salesforce FieldWeGive FieldWeGive API FieldDirectionTypeNotes
IdSalesforce IDsalesforce_idImport from SalesforceHard-codedSalesforce’s unique identifier for this ticket
NameTicket NamenameBoth WaysHard-codedDisplay name of the ticket type
wegive__WeGive_Id__cWeGive Ticket IDidExport to SalesforceHard-codedWeGive’s unique identifier
wegive__Event__cEvent Salesforce IDevent.salesforce_idBoth WaysHard-codedLinks to the parent event
wegive__Event_WeGive_Id__cEvent WeGive IDevent.idExport to SalesforceHard-codedWeGive event ID for reference
wegive__Description__cDescriptiondescriptionBoth WaysHard-codedDescription of what the ticket includes
wegive__Price__cPricepriceBoth WaysHard-codedTicket price in dollars (WeGive stores in cents)
wegive__Limite__cLimitlimitBoth WaysHard-codedMaximum number of tickets available

Important Notes - Tickets

Price Conversion

Ticket prices require conversion between systems:
  • WeGive: Stores prices in cents as an integer (e.g., 10000 = $100.00)
  • Salesforce: Stores prices in dollars as wegive__Price__c (e.g., 100.00)
  • On export: WeGive divides by 100 to convert cents to dollars
  • On import: Salesforce value is multiplied by 100 to convert to cents

Ticket Limits

The limit field controls ticket availability:
  • Set a specific number to limit available tickets
  • Can be null for unlimited tickets
  • Used to create scarcity and manage capacity
  • Decrements as registrations are created

Event Relationship

Each ticket must belong to an event:
  • The wegive__Event__c field links to the parent event
  • Both the Salesforce ID and WeGive ID are stored for reference
  • The integration ensures the event exists before creating tickets

Part 3: Event Registrations

Salesforce Object: wegive__Event_Registration__c
WeGive Model: CampaignEventRegistration

How Event Registration Data Syncs

Direction

  • Import from Salesforce - Data imports from Salesforce into WeGive only
  • Export to Salesforce - Data exports from WeGive to Salesforce only
  • Both Ways - Data syncs in both directions

Mapping Types

  • Hard-coded - Built into the integration logic and cannot be changed

Sync Triggers - Registrations

From WeGive to Salesforce (Export)

Event Registration data is exported from WeGive to Salesforce when:
  • Registration Created: A new registration is created in WeGive
  • Registration Updated: An existing registration is modified in WeGive (e.g., status changed, quantity changed)
Prerequisites for Creating Registrations: Before creating a registration in Salesforce, the integration ensures:
  1. Event exists in Salesforce: The parent event must have a salesforce_id
  2. Ticket exists in Salesforce: The ticket being registered for must have a salesforce_id
  3. Donor exists in Salesforce: The registrant must have a salesforce_id (Contact ID)
The integration will automatically push these prerequisites if they don’t have Salesforce IDs yet.

From Salesforce to WeGive (Import)

Event Registration data is imported from Salesforce to WeGive based on:
  • Last Modified Date: WeGive periodically polls Salesforce for Registrations that have been modified since the last sync
  • Sync Frequency: The integration checks for updated Registrations on a scheduled basis
  • Modified Field Tracking: Only Registrations with a LastModifiedDate newer than the last successful sync are pulled into WeGive

Complete Field Mapping - Registrations

Salesforce FieldWeGive FieldWeGive API FieldDirectionTypeNotes
IdSalesforce IDsalesforce_idImport from SalesforceHard-codedSalesforce’s unique identifier for this registration
wegive__WeGive_Id__cWeGive Registration IDidExport to SalesforceHard-codedWeGive’s unique identifier
wegive__Contact__cDonor Salesforce IDdonor.salesforce_idBoth WaysHard-codedLinks to the Contact who registered
wegive__Event__cEvent Salesforce IDevent.salesforce_idBoth WaysHard-codedLinks to the event
wegive__Event_Ticket__cTicket Salesforce IDticket.salesforce_idBoth WaysHard-codedLinks to the specific ticket type
wegive__Event_Ticket_WeGive_Id__cTicket WeGive IDticket.idExport to SalesforceHard-codedWeGive ticket ID for reference
wegive__WeGive_Donor_Id__cDonor WeGive IDdonor.idExport to SalesforceHard-codedWeGive donor ID for reference
wegive__WeGive_Event_Id__cEvent WeGive IDevent.idExport to SalesforceHard-codedWeGive event ID for reference
wegive__Quantity__cQuantityquantityBoth WaysHard-codedNumber of tickets registered
wegive__Status__cStatusstatusBoth WaysHard-codedRegistration status
wegive__Transaction_Id__cTransaction IDtransaction_idBoth WaysHard-codedLinks to payment transaction if applicable

Important Notes - Registrations

Registration Status

The status field tracks the registration state:
  • Common values include: “Registered”, “Confirmed”, “Cancelled”, “Attended”
  • Status may be updated as the event approaches and concludes
  • Can be used for check-in workflows and attendance tracking

Quantity Tracking

Registrations can include multiple tickets:
  • The quantity field indicates how many tickets were registered
  • This decrements available ticket inventory
  • Allows group registrations under a single contact

Transaction Linking

Registrations can be linked to transactions:
  • If registration requires payment, transaction_id links to the WeGive transaction
  • This connects event registration to donation/payment processing
  • Allows for comprehensive event revenue tracking

Multiple Registrations

A single contact can have multiple registrations:
  • Same contact can register for different ticket types
  • Same contact can register multiple times (if settings allow)
  • Each registration is a separate record

Event Matching & Create/Update Logic

When WeGive Exports an Event to Salesforce

Step 1: Check for Existing Salesforce Event ID
  • If the WeGive event has a salesforce_id: The integration UPDATES the existing Event record in Salesforce
  • If no salesforce_id exists: The integration CREATES a new Event record in Salesforce

When Salesforce Exports an Event to WeGive

Step 1: Check for Existing WeGive Event
  • The integration searches for an existing event by salesforce_id
  • If found, it updates that event
  • If not found, it creates a new event
Step 2: Import Data
  • All mapped fields are imported
  • Boolean values are properly converted
  • Dates are parsed and stored appropriately
  • Location data is stored based on location type

Ticket Matching & Create/Update Logic

When WeGive Exports a Ticket to Salesforce

Step 1: Ensure Event Exists
  • Check if the parent event has a salesforce_id
  • If not, push the event first
Step 2: Check for Existing Salesforce Ticket ID
  • If the WeGive ticket has a salesforce_id: The integration UPDATES the existing Ticket record in Salesforce
  • If no salesforce_id exists: The integration CREATES a new Ticket record in Salesforce

When Salesforce Exports a Ticket to WeGive

Step 1: Check for Existing WeGive Ticket
  • The integration searches for an existing ticket by salesforce_id
  • If found, it updates that ticket
  • If not found, it creates a new ticket
Step 2: Import Data
  • All mapped fields are imported
  • Price is converted from dollars to cents
  • Event relationship is established

Registration Matching & Create/Update Logic

When WeGive Exports a Registration to Salesforce

Step 1: Ensure Prerequisites Exist
  • Check if the event has a salesforce_id - if not, push event first
  • Check if the ticket has a salesforce_id - if not, push ticket first
  • Check if the donor has a salesforce_id - if not, push donor first
Step 2: Check for Existing Salesforce Registration ID
  • If the WeGive registration has a salesforce_id: The integration UPDATES the existing Registration record in Salesforce
  • If no salesforce_id exists: The integration CREATES a new Registration record in Salesforce

When Salesforce Exports a Registration to WeGive

Step 1: Find Related Records
  • Find the event in WeGive by matching wegive__Event__c to salesforce_id
    • If not found, throw an exception
  • Find the ticket in WeGive by matching wegive__Event_Ticket__c to salesforce_id
    • If not found, throw an exception
  • Find the donor in WeGive by matching wegive__Contact__c to salesforce_id
    • If not found, throw an exception
Step 2: Check for Existing WeGive Registration
  • The integration searches for an existing registration by salesforce_id
  • If found, it updates that registration
  • If not found, it creates a new registration
Step 3: Import Data
  • All mapped fields are imported
  • Links to event, ticket, and donor are established
  • Quantity and status are updated

Required Fields

For Events (WeGive to Salesforce):
  • Name
For Tickets (WeGive to Salesforce):
  • Name
  • wegive__Event__c (Event Salesforce ID)
For Registrations (WeGive to Salesforce):
  • wegive__Contact__c (Donor Salesforce ID)
  • wegive__Event__c (Event Salesforce ID)
  • wegive__Event_Ticket__c (Ticket Salesforce ID)

Usage in WeGive

Events, Tickets, and Registrations in WeGive are used for:
  • Event Management: Create and manage fundraising events
  • Ticketing: Sell tickets with different pricing tiers
  • Registration Tracking: Track who’s attending your events
  • Revenue Management: Connect registrations to donations and payments
  • Communication: Send targeted messages to event registrants
  • Check-in: Manage event day check-in and attendance
  • Reporting: Analyze event performance and attendance

Usage in Salesforce

Events, Tickets, and Registrations in Salesforce are used for:
  • Event History: Track constituent participation in events
  • Revenue Attribution: Link event revenue to campaigns and contacts
  • Engagement Tracking: Monitor supporter engagement with events
  • Reporting: Analyze event success and attendance patterns
  • Stewardship: Follow up with attendees for cultivation
  • Database Segmentation: Create lists based on event attendance

Best Practices

  1. Create events early to allow time for promotion
  2. Set clear ticket limits to manage capacity expectations
  3. Use descriptive ticket names that clearly explain what’s included
  4. Test registration flow before launching event to public
  5. Set appropriate access types (public vs. private) based on event needs
  6. Use location fields correctly - address for in-person, URL for virtual
  7. Monitor registration activity to gauge interest and adjust as needed
  8. Link to transactions when registration involves payment
  9. Update status as registrations move through lifecycle (registered → attended)
  10. Coordinate with campaigns - connect events to broader fundraising initiatives

Troubleshooting

Event not syncing:
  • Verify the WeGive managed package is installed
  • Check that event has been modified since last sync
  • Ensure integration has access to wegive__Event__c object
Ticket not syncing:
  • Verify parent event has a salesforce_id
  • Check that ticket price is properly formatted
  • Ensure integration has access to wegive__Event_Ticket__c object
Registration not syncing:
  • Verify event, ticket, and donor all have Salesforce IDs
  • Check that donor is a Contact (individual), not just an Account
  • Ensure integration has access to wegive__Event_Registration__c object
Ticket prices don’t match:
  • WeGive stores in cents, Salesforce in dollars
  • Verify conversion is working (divide by 100)
Location data missing:
  • Check that correct location field is populated based on location type
  • In-person events use wegive__Location_Address__c
  • Virtual events use wegive__Location_URL__c
Registration prerequisites missing:
  • Sync events, tickets, and donors before creating registrations
  • Use cascading sync to automatically push prerequisites