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

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

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

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