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)
- 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
Part 1: Campaign Events
Salesforce Object:wegive__Event__cWeGive 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)
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
LastModifiedDatenewer than the last successful sync are pulled into WeGive
Complete Field Mapping - Events
| Salesforce Field | WeGive Field | WeGive API Field | Direction | Type | Notes |
|---|---|---|---|---|---|
| Id | Salesforce ID | salesforce_id | Import from Salesforce | Hard-coded | Salesforce’s unique identifier for this event |
| Name | Event Name | name | Both Ways | Hard-coded | Display name of the event |
| wegive__WeGive_Id__c | WeGive Event ID | id | Export to Salesforce | Hard-coded | WeGive’s unique identifier |
| wegive__Description__c | Description | description | Both Ways | Hard-coded | Detailed description of the event |
| wegive__Location__c | Location Type | location | Both Ways | Hard-coded | ”irl” (in-person) or “virtual” |
| wegive__Location_Address__c | Location Address | location_address.full | Both Ways | Hard-coded | Full physical address for in-person events |
| wegive__Location_URL__c | Location URL | location_url | Both Ways | Hard-coded | Virtual event URL/link |
| wegive__Start_Date__c | Start Date | start_date | Both Ways | Hard-coded | Event start date |
| wegive__End_Date__c | End Date | end_date | Both Ways | Hard-coded | Event end date |
| wegive__Timezone__c | Timezone | timezone | Both Ways | Hard-coded | Event timezone |
| wegive__Slug__c | URL Slug | slug | Both Ways | Hard-coded | URL-friendly identifier |
| wegive__Access_Type__c | Access Type | access_type | Both Ways | Hard-coded | Public or private event |
| wegive__Max_Capacity__c | Max Capacity | max_capacity | Both Ways | Hard-coded | Maximum number of attendees |
| wegive__Has_Tickets__c | Has Tickets | has_tickets | Both Ways | Hard-coded | Whether tickets are available |
| wegive__Ask_Donations__c | Ask for Donations | ask_donations | Both Ways | Hard-coded | Whether to ask for donations during registration |
| wegive__Company_Registrations__c | Allow Company Registration | company_registrations | Both Ways | Hard-coded | Whether companies can register |
| wegive__One_Ticket_Per_Person__c | One Ticket Per Person | one_ticket_per_person | Both Ways | Hard-coded | Limit one ticket per registrant |
| wegive__Show_Registration_Activity__c | Show Registration Activity | show_registration_activity | Both Ways | Hard-coded | Display recent registrations |
| wegive__Show_View_Events__c | Show View Events | show_view_event | Both Ways | Hard-coded | Display event details publicly |
| wegive__Show_View_Tickets__c | Show View Tickets | show_view_tickets | Both Ways | Hard-coded | Display ticket options publicly |
| wegive__Is_Opened__c | Is Open | is_opened | Both Ways | Hard-coded | Whether registration is currently open |
| wegive__Require_Registration_Waiver__c | Require Waiver | require_registration_waiver | Both Ways | Hard-coded | Whether attendees must sign a waiver |
| wegive__Registration_Success_Title__c | Success Title | registration_success_title | Both Ways | Hard-coded | Title shown after successful registration |
| wegive__Registration_Success_Description__c | Success Description | registration_success_description | Both Ways | Hard-coded | Message shown after successful registration |
| wegive__DS_Template_Id__c | DocuSign Template ID | ds_template_id | Both Ways | Hard-coded | For waiver/document signing integration |
Important Notes - Events
Location Types
Events can be either in-person or virtual:- In-Person (IRL): Uses
wegive__Location_Address__cfor the physical address - Virtual: Uses
wegive__Location_URL__cfor the meeting/streaming link - The
locationfield 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 availableone_ticket_per_person- Prevents bulk ticket purchasescompany_registrations- Allows organization-level registrationask_donations- Prompts for donations during registrationrequire_registration_waiver- Requires legal waiver acceptance
Visibility Settings
Control what information is publicly displayed:show_registration_activity- Shows recent registrations for social proofshow_view_event- Makes event details publicly visibleshow_view_tickets- Makes ticket information publicly visibleis_opened- Whether registration is currently accepting new registrants
URL Slug
Theslug 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__cWeGive 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)
- Event exists in Salesforce: The parent event must have a
salesforce_id
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
LastModifiedDatenewer than the last successful sync are pulled into WeGive
Complete Field Mapping - Tickets
| Salesforce Field | WeGive Field | WeGive API Field | Direction | Type | Notes |
|---|---|---|---|---|---|
| Id | Salesforce ID | salesforce_id | Import from Salesforce | Hard-coded | Salesforce’s unique identifier for this ticket |
| Name | Ticket Name | name | Both Ways | Hard-coded | Display name of the ticket type |
| wegive__WeGive_Id__c | WeGive Ticket ID | id | Export to Salesforce | Hard-coded | WeGive’s unique identifier |
| wegive__Event__c | Event Salesforce ID | event.salesforce_id | Both Ways | Hard-coded | Links to the parent event |
| wegive__Event_WeGive_Id__c | Event WeGive ID | event.id | Export to Salesforce | Hard-coded | WeGive event ID for reference |
| wegive__Description__c | Description | description | Both Ways | Hard-coded | Description of what the ticket includes |
| wegive__Price__c | Price | price | Both Ways | Hard-coded | Ticket price in dollars (WeGive stores in cents) |
| wegive__Limite__c | Limit | limit | Both Ways | Hard-coded | Maximum 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
Thelimit 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__cfield 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__cWeGive 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)
- Event exists in Salesforce: The parent event must have a
salesforce_id - Ticket exists in Salesforce: The ticket being registered for must have a
salesforce_id - Donor exists in Salesforce: The registrant must have a
salesforce_id(Contact ID)
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
LastModifiedDatenewer than the last successful sync are pulled into WeGive
Complete Field Mapping - Registrations
| Salesforce Field | WeGive Field | WeGive API Field | Direction | Type | Notes |
|---|---|---|---|---|---|
| Id | Salesforce ID | salesforce_id | Import from Salesforce | Hard-coded | Salesforce’s unique identifier for this registration |
| wegive__WeGive_Id__c | WeGive Registration ID | id | Export to Salesforce | Hard-coded | WeGive’s unique identifier |
| wegive__Contact__c | Donor Salesforce ID | donor.salesforce_id | Both Ways | Hard-coded | Links to the Contact who registered |
| wegive__Event__c | Event Salesforce ID | event.salesforce_id | Both Ways | Hard-coded | Links to the event |
| wegive__Event_Ticket__c | Ticket Salesforce ID | ticket.salesforce_id | Both Ways | Hard-coded | Links to the specific ticket type |
| wegive__Event_Ticket_WeGive_Id__c | Ticket WeGive ID | ticket.id | Export to Salesforce | Hard-coded | WeGive ticket ID for reference |
| wegive__WeGive_Donor_Id__c | Donor WeGive ID | donor.id | Export to Salesforce | Hard-coded | WeGive donor ID for reference |
| wegive__WeGive_Event_Id__c | Event WeGive ID | event.id | Export to Salesforce | Hard-coded | WeGive event ID for reference |
| wegive__Quantity__c | Quantity | quantity | Both Ways | Hard-coded | Number of tickets registered |
| wegive__Status__c | Status | status | Both Ways | Hard-coded | Registration status |
| wegive__Transaction_Id__c | Transaction ID | transaction_id | Both Ways | Hard-coded | Links to payment transaction if applicable |
Important Notes - Registrations
Registration Status
Thestatus 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
quantityfield 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_idlinks 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_idexists: 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
- 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
- If the WeGive ticket has a
salesforce_id: The integration UPDATES the existing Ticket record in Salesforce - If no
salesforce_idexists: 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
- 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
- If the WeGive registration has a
salesforce_id: The integration UPDATES the existing Registration record in Salesforce - If no
salesforce_idexists: 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__ctosalesforce_id- If not found, throw an exception
- Find the ticket in WeGive by matching
wegive__Event_Ticket__ctosalesforce_id- If not found, throw an exception
- Find the donor in WeGive by matching
wegive__Contact__ctosalesforce_id- If not found, throw an exception
- The integration searches for an existing registration by
salesforce_id - If found, it updates that registration
- If not found, it creates a new registration
- 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
- Name
- wegive__Event__c (Event Salesforce ID)
- 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
- Create events early to allow time for promotion
- Set clear ticket limits to manage capacity expectations
- Use descriptive ticket names that clearly explain what’s included
- Test registration flow before launching event to public
- Set appropriate access types (public vs. private) based on event needs
- Use location fields correctly - address for in-person, URL for virtual
- Monitor registration activity to gauge interest and adjust as needed
- Link to transactions when registration involves payment
- Update status as registrations move through lifecycle (registered → attended)
- 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__cobject
- Verify parent event has a
salesforce_id - Check that ticket price is properly formatted
- Ensure integration has access to
wegive__Event_Ticket__cobject
- 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__cobject
- WeGive stores in cents, Salesforce in dollars
- Verify conversion is working (divide by 100)
- 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
- Sync events, tickets, and donors before creating registrations
- Use cascading sync to automatically push prerequisites