1 — Activity Panel Not Visible on Page
Symptom: The Activity Panel component does not appear at all on a record page.
|
# |
Check |
How to Verify |
Fix |
|---|---|---|---|
|
1 |
Component not added to the page layout |
Open the record page → gear icon → Edit Page → inspect the canvas |
Drag Activity Panel ( |
|
2 |
Page not activated after adding |
In Lightning App Builder, check the activation status badge at the top |
Click Activation and assign as org/app/profile default as appropriate. |
|
3 |
User does not have EngageHub permission set |
Setup → Users → open the user → Permission Set Assignments |
Assign the EngageHub User permission set. |
|
4 |
Component added to wrong page variant |
The page may have multiple record type or profile assignments |
In Lightning App Builder, check all page assignments and ensure the variant the user sees has the component. |
2 — Activity Panel Displays a Red Error Banner
Symptom: The component renders but shows a red alert banner instead of action buttons and timeline.
The error message is surfaced directly from the Apex response. The component displays errorMessage when either the Activity_Buttons_Configuration metadata call or the Default_Activity_Filters metadata call returns isSuccess: false.
|
Likely Cause |
Diagnostic Step |
Fix |
|---|---|---|
|
|
Go to Setup → Custom Metadata Types → Activity Panel Configuration → open the Activity Buttons Configuration record → inspect the |
Paste valid JSON with a |
|
|
Same path → open Default Activity Filters record |
Validate and correct the |
|
Apex class |
Setup → Apex Classes → |
Ensure the user's profile or permission set has at least Read access to this class. |
|
The |
Check browser console for |
Validate JSON in the Default Schema Model custom metadata record's |
3 — Action Buttons Missing or Dropdown Disabled
Symptom: Some or all action buttons (Log a Call, New Task, New Event, New Note) are absent, or the dropdown chevron is greyed out.
3a — All Buttons Missing
The loadMetadata method parses Activity_Buttons_Configuration and splits entries into regular buttons (isDropdown: false) and dropdown entries (isDropdown: true). If this call fails silently, _allButtons stays empty.
-
Open browser Developer Console → Console tab and look for the log
Buttons config found. If absent, the metadata record did not return data. -
Verify the
Activity_Buttons_Configurationrecord exists under Setup → Custom Metadata Types → Activity Panel Configuration. -
Confirm the
Value__cfield contains a valid JSON object with abuttonMappingarray.
3b — Specific Button Missing for a Particular Object or Record Type
Buttons support a hiddenFor filter. If the button config contains an entry like:
"hiddenFor": [{ "objectName": "Account", "recordTypes": ["CustomerAccount"] }]
…the button is hidden for that record type on that object. This is controlled entirely by the _filterByVisibility method.
-
Open the
Activity_Buttons_Configurationmetadata record. -
Inspect the
hiddenForarray for each missing button. -
Remove or adjust the
hiddenForentry for the affected object/record type combination.
3c — Dropdown Chevron Disabled
The dropdown button is disabled when dropdownOptions (buttons with isDropdown: true) is empty.
-
Verify the
Activity_Buttons_Configurationrecord includes at least one button with"isDropdown": true. -
Check that none of the dropdown buttons are suppressed by
hiddenForfor the current object/record type.
4 — Activity Timeline Empty or Not Loading
Symptom: The timeline shows no activities even though activity records exist for the record, or the spinner runs indefinitely.
4a — Spinner Runs Indefinitely
The spinner is controlled by isLoading in activityRecordLogs. If any Apex promise in loadActivityTimeline is pending forever, the spinner never clears.
-
Open browser console and check for unresolved network calls to
ActivityRecordLogsController. -
Check if
getActivityRecordConfigsis returning data — this is the first call; if it times out, nothing else runs. -
Verify
ActivityRecordLogsControlleris accessible to the user's profile.
4b — Timeline Empty — No Past or Upcoming Activities
|
Check |
Details |
|---|---|
|
Active filters are too restrictive |
The default filter may be set to My activities + a narrow date range. Click the Settings gear icon and change Activities to Show to "All activities" and Date Range to "All time", then click Apply. |
|
|
Setup → Custom Metadata Types → Activity Panel Configuration → Activity Record Configuration. Confirm the |
|
|
This can happen if the running user lacks Read access to the record's object. Check object-level security for the user's profile. |
|
Activities exist on a child object but |
Open the |
|
The |
The component reads |
4c — Only Upcoming Activities Shown, No Past Activities (or Vice Versa)
The timeline splits into upcomingAndOverdue and pastActivities based on the sortingDate returned by Apex. If sortingDate is null for a record, it is silently skipped during grouping.
-
Confirm the Apex
getCurrentAndParentActivitiesmethod is populatingsortingDatefor the expected activity types. -
Check the active Date Range filter — "Next 7 days" filters out all past activities by design.
5 — Filters Not Working or Returning Unexpected Results
Symptom: Applying filters via the Settings modal has no effect, shows wrong results, or the Filter Settings modal itself does not open.
5a — Filter Settings Modal Does Not Open
The gear icon calls openFilterBox. If the Activity Panel's errorMessage is set, the entire button row and filter row are hidden by the if:false={errorMessage} template guard — confirming this is a metadata error (see Section 2).
5b — "My Activities" Filter Shows No Results
The filter compares activity.assignedTo.recordId to loggedInUser.recordId. If getUserAndCurrentRecord failed silently, loggedInUser is an empty object and the comparison always fails.
-
Open browser console for errors on
getUserAndCurrentRecord. -
Confirm
ActivityPanelControllerhas access to the running user profile.
5c — Date Range Filter Returns Wrong Activities
The filter converts dates to/from the user's timezone using the timeZone value returned by getUserAndCurrentRecord. The timezone string must be in GMT±HH:MM format. Named timezone strings like America/Los_Angeles are parsed by parseTimezoneOffset as 0 (fallback), which shifts all comparisons to UTC.
Verify the timezone value returned from getUserAndCurrentRecord in the browser console. If it is a named timezone (e.g., America/Los_Angeles), the Apex method needs to convert it to GMT offset format before returning.
5d — "Activity Type" Checkbox Shows No Options in Filter Modal
Options are loaded from the Default_Activity_Filters metadata record's options.activityTypeOptions field. If the field is missing, the code falls back to hardcoded defaults. Confirm the Value__c JSON includes:
"options": {
"activityTypeOptions": [...]
}
6 — Create / Edit / Log Call Modal Issues
Symptom: The action modal opens but fields are missing, dropdowns are empty, or required field validation is not firing.
6a — Modal Opens But Some Fields Are Missing
All modal fields are driven by the Default_Schema_Model custom metadata record. The computedFields getter renders whatever is defined in schemaToUse[action].fields.
-
Setup → Custom Metadata Types → Activity Panel Configuration → Default Schema Model.
-
Open the
Value__cJSON and locate the action key (e.g.,"New Task","Edit Event","Log Call"). -
Verify the field entry exists with correct
fieldAPIName,name, and at least one rendering flag (isInput,isCombobox,isTextArea,isRecordLookup,isRichText, orisCheckbox).
6b — Picklist / Combobox is Empty
The loadPicklistOptions method calls ActivityUtils.getPicklistValue for each isCombobox or isCustomCombobox field at modal open time.
|
Cause |
Fix |
|---|---|
|
The field API name in the schema does not match the actual field on the object |
Verify |
|
|
Add Read access to |
|
Dependent picklist: |
The controlling field's value must be set in |
6c — "Who" / "What" / "Assigned To" Lookup Shows No Searchable Objects
These fields use the c-record-lookup component which receives the object list from actionConfig.whoObjects, whatObjects, and assignedToObjects. These are populated by getObjects and getWhatObjects Apex calls wired in activityPanel.
-
Open browser console and check for errors on
who getObjects error,what getObjects error, orassignedTo getObjects error. -
Verify
ActivityPanelController.getObjectsandgetWhatObjectsreturn the expected API name arrays. -
If the object list is correct but icons are missing,
getObjectInfos(Lightning wire adapter) may be failing — check forwho getObjectInfos errorin console.
6d — Required Field Validation Does Not Prevent Save
The isValid method queries lightning-input, lightning-combobox, and c-record-lookup elements and calls checkValidity. The c-record-lookup component must implement the checkValidity and reportValidity interface. If it does not, required lookup fields will not block the save.
7 — Flow-Based Buttons Not Launching (Send Secure Email, Send SMS, Send eForm)
Symptom: Clicking a dropdown button (Send Secure Email, Send SMS, Send eForm) does nothing, or the flow modal opens empty.
|
# |
Cause |
Fix |
|---|---|---|
|
1 |
Flow is Inactive |
Setup → Flows → locate the flow by API name → activate it. Expected API names: |
|
2 |
Flow API name in |
Open the metadata record → |
|
3 |
Flow input variable name mismatch |
The component passes one variable: |
|
4 |
Flow modal opens but appears blank on desktop |
The |
|
5 |
On mobile, the flow launches in a full-screen panel but the Cancel button does not dismiss it |
|
8 — Real-Time Refresh Not Working (Platform Events)
Symptom: After an external action fires the Activity_UI_Event__e platform event, the timeline does not refresh automatically.
The component subscribes to /event/Activity_UI_Event__e using the EMP API. It filters by cm_activity__Parent_Record_Id__c matching the current recordId, and handles two event types: Close And Refresh and Refresh.
|
# |
Check |
Fix |
|---|---|---|
|
1 |
User does not have Subscribe access to the platform event |
Setup → Platform Events → |
|
2 |
Namespace prefix has changed or differs from |
The component reads |
|
3 |
EMP API subscription failed silently |
Open browser console. |
|
4 |
Event fires but |
The Apex process firing the event must populate |
|
5 |
|
This is intentional — the component waits 2 seconds before hiding the flow modal and refreshing. No action needed. |
9 — Mobile Display Issues
Symptom: On a mobile device or narrow viewport, the layout is broken, buttons are icon-only, or flow modals fill the screen unexpectedly.
|
Symptom |
Cause |
Fix |
|---|---|---|
|
Button labels disappear |
|
Modify |
|
Flow button launches in full-screen panel instead of a modal |
|
No fix needed. If the client wants modal on all screen sizes, set |
|
Action modals (Task/Event/Note) show a slide-up panel on mobile instead of a centered modal |
|
If modal-only behavior is required, modify |
|
Resize does not reflow the component |
|
Manually trigger a resize by calling |
10 — Save / Delete Errors on Activities
Symptom: Clicking Save on a task, event, or note shows an error toast, or Delete fails.
The parseErrorMessage method strips the Salesforce APEX DML error wrapper and surfaces the inner message. The toast will show the cleaned-up error. Look at the exact toast text for the specific cause.
|
Error Text Pattern |
Cause |
Fix |
|---|---|---|
|
|
A field marked required in the org (not just the schema) is not being sent |
Check the |
|
|
A Salesforce validation rule on Task, Event, or ContentNote failed |
Review Setup → Object Manager → Task/Event → Validation Rules. The rule may need a cmEngageHub bypass. |
|
|
The user does not have Edit access to Task, Event, or ContentNote |
Review the user's profile object permissions for Task, Event, and ContentNote. |
|
|
The record lookup returned a record ID of an object not allowed in WhoId/WhatId |
Check Setup → Activities Settings to ensure the allowed related objects match the |
|
|
|
Verify every |
|
Delete toast: |
|
Check browser console for the raw error from the |
11 — Expand All / Collapse All / View All Not Responding
Symptom: Clicking Expand All, Collapse All, or View All / View Less has no visible effect.
These controls call @api methods (expandActivityTimeline, toggleViewAllActivities) on the c-activity-record-logs child component via this.template.querySelector. If the child component has not rendered yet (e.g., still loading), the reference is null and the call is silently ignored.
|
Cause |
Fix |
|---|---|
|
Timeline is still loading when button is clicked |
Wait for the loading spinner to disappear before clicking these controls. |
|
|
Check browser console for errors in |
|
|
|
12 — Custom Metadata Configuration Errors
Symptom: After updating a custom metadata record, the panel behaves unexpectedly or shows errors.
All four Activity_Panel_Configuration records store configuration as raw JSON strings in Value__c. Any JSON syntax error causes the Apex wrapper to return isSuccess: false with the parse exception message.
How to Validate Configuration JSON Before Saving
-
Copy the
Value__ccontent into a JSON validator (e.g., http://jsonlint.com or VS Code with Prettier). -
Fix any trailing commas, mismatched brackets, or unescaped characters.
-
Save the metadata record.
-
Hard-refresh the Salesforce page (Ctrl+Shift+R) to bypass LWC cache.
Common JSON Errors per Record
|
Metadata Record |
Common Mistake |
|---|---|
|
|
Missing |
|
|
Missing |
|
|
Action key does not exactly match what the component expects (e.g., |
|
|
|
Clearing the LWC Cache After a Metadata Change
Custom metadata values are fetched at component load time via @wire and async Apex calls. After updating a metadata record:
-
Open the record page in a new browser tab (not a refresh) to force a fresh component lifecycle.
-
If the issue persists, append
?disableCache=1to the page URL in Experience Cloud, or use Setup → Session Settings → Clear All Caches for persistent org-level cache issues.
Quick Reference — Apex Methods and Their Failure Impact
|
Apex Method |
Component |
Failure Impact |
|---|---|---|
|
|
|
Red error banner; buttons and timeline hidden |
|
|
|
|
|
|
|
Lookup fields in modals fall back to hardcoded defaults ( |
|
|
|
|
|
|
|
Timeline loads nothing; no error shown to user |
|
|
|
Activities from current/parent records missing |
|
|
|
Child record activities missing from timeline |
|
|
|
Combobox fields render empty; user cannot select a value |
|
|
|
Dependent picklist renders empty and is disabled |
Support Escalation
If the above steps do not resolve the issue, collect the following before escalating to CloudMaven support:
-
Browser console logs (F12 → Console) from the moment the issue occurs
-
Network tab — XHR calls to
auraorlwcendpoints and their response payloads -
Exact text of any error toast or banner message
-
Custom Metadata record contents — copy the
Value__cfrom all fourActivity_Panel_Configurationrecords -
User profile name and the list of assigned permission sets
Contact: support@cloudmaven.com