1. Summary
Kemicard Events is a custom Salesforce object (Event__c) designed to model event metadata that integrates with Kemicard’s digital wallet pass generation and event scanning solutions. This object serves as the central hub for event definition, supporting both one-time conferences and recurring events, while providing the data backbone for wallet pass generation and real-time attendance tracking.
2. Object Overview
Object Name (API): Event__c
Object Label (User-Facing): Kemicard Event
Plural Label: Kemicard Events
Custom Object Type: Custom
Features Enabled:
- Enable Reports ✓
- Track Activities ✓
- Track Field History ✓
- Deployment Status: Deployed
3. Record Types
Event__c supports two record type patterns to accommodate different event lifecycles:
| Record Type | Description | Use Case | Status |
| One Time | Single-occurrence events with defined start and end dates | Conferences, trade shows, workshops, one-off webinars | Active |
| Recurring | Events that repeat on a schedule | Monthly member nights, weekly training sessions, annual galas | Active |
Both record types are Active and visible to all users. The record type selection determines the event pattern and may control field visibility and validation rules.
4. Complete Field Reference
Event__c contains 11 fields. Below is the complete field listing with API names, data types, and usage guidance:
4.1 Core Fields
| Field Label | API Name | Data Type | Indexed | Required | Description & Usage |
| Event Name | Name | Text(80) | Yes | Yes | Human-readable event identifier (for example “TechSummit 2026 – Calgary” or “SF Dreamforce”). Appears as the primary link in list views and record pages. Must be unique or descriptive within your org to avoid confusion. |
| Type | Type__c | Picklist | No | No | Business classification of the event. Supported picklist values include: Conference, Chapter Meeting, Charity, Networking, Seminars. Use consistent values for reporting and filtering. Examples : “Conference” |
| Description | Description__c | Text Area(255) | No | No | Long-form details about the event: venue address, agenda highlights, registration link, special instructions, or internal notes. Visible on the record detail page; not displayed on passes by default. Example: “Annual technology summit in Calgary featuring keynotes, workshops, and networking. Hybrid format with in-person and virtual options.” |
| Record Type | RecordTypeId | Record Type | Yes | Yes | Determines event pattern (One Time or Recurring) and associated field visibility. Selected during record creation and can be changed via “Change Record Type” action if permissions allow. |
| Owner | OwnerId | Lookup(User, Group) | Yes | Yes | Assignee responsible for the event. Controls sharing and record access. Typically the event coordinator or marketing manager. Can be changed via “Change Owner” action. Example: “User User” |
4.2 Date & Time Fields
| Field Label | API Name | Data Type | Indexed | Required | Description & Usage |
| Start Date | Start_Date__c | Date/Time | No | No | Event start date and time (example: 2026-03-15, 9:00 a.m.). Used by the Occurring Now formula field. Should be before the End Date. Critical for generating wallet pass validity windows and pass notifications. |
| End Date | End_Date__c | Date/Time | No | No | Event end date and time (example: 2026-03-17, 5:00 p.m.). Used by the Occurring Now formula field. Should be after the Start Date. Marks the end of the event and passes validity. |
4.3 Status & Derived Fields
| Field Label | API Name | Data Type | Formula / Type | Indexed | Description & Usage |
| Active | Active__c | Checkbox | Boolean | No | Indicates whether the event is currently in use. Set to true when the event is ready for pass generation and scanning workflows. Set to false when the event is cancelled, archived, or no longer accepting attendees. Controls event visibility in Kemicard pass workflows. Example: Both “SF Dreamforce” and “SF TDX” show Active = checked ✓ |
| Occurring Now | Occurring_Now__c | Formula (Checkbox) | Derived | No | Read-only formula field. Returns true if the current date/time falls between Start Date and End Date. Useful for identifying live events in list views and dashboards. Not manually editable. Both “SF Dreamforce” and “SF TDX” show Occurring Now = checked ✓ because the current date (Feb 7, 2026) falls within their event window (Feb 7 – Feb 10, 2026). |
4.4 System Fields (Read-Only)
| Field Label | API Name | Data Type | Description | Example |
| Created By | CreatedById | Lookup(User) | User who created the Event__c record. Automatically populated. Read-only. | User User, 2026-02-08, 1:59 a.m. |
| Last Modified By | LastModifiedById | Lookup(User) | User who last edited the record. Automatically updated. Read-only. | User User, 2026-02-08, 1:59 a.m. |
5. Page Layout & Field Visibility
The default Kemicard Event page layout for “One Time” and “Recurring” record types displays fields in the following structure:
Left Column (Primary Section):
- Event Name
- Description
- Start Date
- End Date
- Type
- Occurring Now (read-only)
Right Column (Secondary Section):
- Record Type
- Active
- Owner
Related Tab:
- Related records, if configured
Activity Tab:
- Event activity feed and history
Example showing the “SF Dreamforce” event details:
- Event Name: SF Dreamforce
- Record Type: One Time
- Active: ✓ (checked)
- Start Date: 2026-02-07, 1:32 a.m.
- End Date: 2026-02-10, 1:32 a.m.
- Type: Conference
- Owner: User User
- Occurring Now: ✓ (checked, because today is Feb 7, 2026)
6. Validation & Data Quality Rules
Based on best practices for event management in Salesforce, your org should enforce:
| Rule | Description | Recommended Action |
| Unique Event Name | Prevent duplicate event names within the same date range. | Validation rule or duplicate rule to avoid confusion in list views. |
| Date Validation | Ensure End Date ≥ Start Date. | Validation rule: End_Date__c < Start_Date__c → Error. |
| Mandatory Fields | Require Event Name, Start Date, End Date, and Active status before save. | Field-level requirements via page layout and validation. |
| Type Picklist Consistency | Use standardized Type values (Conference, Webinar, etc.) for filtering and reporting. | Validation rule or picklist enforcement. |
7. Security & Access Control
Event__c inherits standard Salesforce security features:
- Profiles & Permission Sets: Control which users can create, read, update, or delete Event__c records.
- Field-Level Security: Hide sensitive fields from certain users via permission sets.
- Sharing Rules: Extend access to events owned by other users.
- Org-Wide Defaults: Set default sharing level (Public Read, Public Read/Write, Private) at the object level.
Recommended Configuration:
- Allow Event Coordinators and Admins to create and manage events.
- Allow Marketing and Sales teams to read events and generate passes.
- Allow Kemicard Console operators to read events for pass generation and scanning.
- Restrict event deletion to Admins only.
8. Integration with Kemicard Ecosystem
Event__c does not generate wallet passes directly. Instead, it serves as the event metadata backbone that Kemicard workflows reference.
8.1 Data Flow
text
Event__c (event definition: name, dates, type, active status)
↓
Kemicard Configuration (defines which object generates passes and how)
↓
Kemicard Template (defines pass appearance and field mapping)
↓
Attendee Object (Contact, Lead, Member, Registration__c, etc.)
↓
Flow / Apex / Kemicard Console Action (generates pass with event metadata)
↓
Apple Wallet / Google Wallet Pass (displays event name, dates, location, QR code)
↓
Kemicard Scanner App (scans pass, verifies event date window, logs attendance)
↓
Attendance Log (linked to Event__c and attendee record)
8.2 Pass Generation
When a Kemicard pass is generated:
- The template may reference Event__c fields to populate pass details (event name, dates, location).
- The pass barcode/QR code encodes attendance information linked to the Event__c record.
- The pass automatically inherits the event’s Active status and date validity window.
8.3 Scanner Integration
The Kemicard Scanner app (or web scanning page) reads passes during the event:
- Scanner confirms that the current time is within the event’s Start Date and End Date window.
- Scanner logs attendance against the attendee and the Event__c record.
- Real-time dashboards and reports show attendance by event.
9. List View & Filtering
9.1 Default List View Columns
The “All” list view for Kemicard Events displays:
| Column | API Field | Purpose |
| Event Name | Name | Primary identifier; click to open record |
| Record Type | RecordTypeId | Distinguishes One Time vs. Recurring events |
| Active | Active__c | Quick indicator of event status |
| Occurring Now | Occurring_Now__c | Highlights events currently running |
| Start Date | Start_Date__c | Event start; useful for sorting |
| End Date | End_Date__c | Event end; useful for sorting |
| Type | Type__c | Business classification; enables filtering |
Example showing the list view with 2 items:
| Event Name | Record Type | Active | Occurring Now | Start Date | End Date | Type |
| SF Dreamforce | One Time | ✓ | ✓ | 2026-02-07, 1:32 a.m. | 2026-02-10, 1:32 a.m. | Conference |
| SF TDX | One Time | ✓ | ✓ | 2026-02-07, 1:32 a.m. | 2026-02-10, 1:32 a.m. | Conference |
9.2 Suggested Filters
Create additional list view filters for efficiency:
- Upcoming Events: Start_Date__c >= TODAY (future events)
- Active Events: Active__c = true (events ready for use)
- This Month: Start_Date__c >= THIS_MONTH AND Start_Date__c < NEXT_MONTH
- By Type: Filter by Type (example Conference or Webinar)
- Occurring Now: Occurring_Now__c = true (live events)
10. Creating & Managing Events
10.1 Creating a New Event
Step-by-step walkthrough with screenshot examples:
- Navigate to Kemicard Events list.
- Click New.
- Record Type Selection Dialog appears:
- Select One Time or Recurring.
- Click Next.
- New Event Form opens:
- Event Name (required): Type a descriptive name (example: “TechSummit 2026 – Calgary”)
- Description (optional): Add context (example: “Annual technology summit in Calgary featuring keynotes, workshops, and networking. Hybrid format with in-person and virtual options.”)
- Start Date: Enter date and time (example: 2026-03-15, 9:00 a.m.)
- End Date: Enter date and time (example: 2026-03-17, 5:00 p.m.)
- Type (optional): Select from picklist (example: Conference)
- Active: Check to mark event as ready for use
- Owner: Automatically set to current user; change if needed
- Click Save.
Success Message:
- Green checkmark confirms: “Kemicard Event ‘TechSummit 2026 – Calgary’ was created.”
- The event record opens showing all populated fields.
Real Example :
- Event Name: TechSummit 2026 – Calgary
- Record Type: One Time
- Active: ✓
- Start Date: 2026-03-15, 9:00 a.m.
- End Date: 2026-03-17, 5:00 p.m.
- Type: Conference
- Owner: User User
- Created By: User User, 2026-02-08, 1:59 a.m.
10.2 Editing an Existing Event
- Open the event from the Kemicard Events list.
- Click Edit.
- Modify fields as needed (dates, type, description, active status).
- Click Save.
Important: If you edit Start Date or End Date, the Occurring Now formula updates automatically to reflect whether the current time now falls within the new window.
10.3 Changing Record Type
- Open an event record.
- Click Change Record Type (button at top right).
- Select the new record type (One Time or Recurring).
- Review any field visibility changes.
- Click Save.
10.4 Cloning Events
To duplicate an event (useful for recurring annual events):
- Open the event.
- Click Clone.
- Adjust Event Name, Start Date, End Date, and other fields.
- Click Save.
10.5 Archiving Events
To retire an event without deleting it:
- Open the event.
- Click Edit.
- Set Active to false.
- Click Save.
The event remains in the database for historical reporting but is hidden from Kemicard pass generation workflows.
11. Real-World Examples
Example 1: SF Dreamforce Event
Overview:
SF Dreamforce is a one-time conference spanning four days in February 2026.
Record Details:
- Event Name: SF Dreamforce
- Record Type: One Time
- Active: ✓ (true)
- Start Date: 2026-02-07, 1:32 a.m.
- End Date: 2026-02-10, 1:32 a.m.
- Type: Conference
- Owner: User User
- Occurring Now