I’ve worked through several custom field portal sync issues and can guide you through the complete troubleshooting process. Let me address all three key areas systematically:
1. Portal Layout Configuration:
First, verify the exact portal layout setup. Go to Setup > Channels > Customer Portal > Portal Configuration and select your portal. Then navigate to Modules > Loyalty Program > Layout. You should see a drag-and-drop layout editor. Make sure:
- The ‘Reward_Points_Balance’ field is actually in the visible section (not in the ‘Hidden Fields’ area at the bottom)
- The field isn’t inside a collapsed section that requires customers to expand it
- The field order is correct (sometimes fields at the very bottom don’t render if there’s a layout height restriction)
- Click ‘Save’ and then ‘Publish Layout’ - the publish step is crucial and often missed
2. Field Mapping Between CRM and Portal:
Custom fields sometimes need explicit API name mapping for portal sync. Go to Setup > Developer Space > APIs > API Names and find the Loyalty Program module. Look up the API name for your custom field (probably something like ‘Reward_Points_Balance__c’). Then go to Setup > Channels > Customer Portal > Field Mapping and verify there’s an entry mapping this CRM field to the portal field. If the mapping is missing, add it manually:
- CRM Field: Reward_Points_Balance
- Portal Field: Reward_Points_Balance
- Sync Direction: CRM to Portal (one-way)
- Update Frequency: Real-time
3. Custom Field Permissions - Complete Checklist:
Field-level security has multiple layers for portal access:
a) Field-Level Security Matrix: Setup > Security Control > Field Level Security > Loyalty Program module. Find ‘Reward_Points_Balance’ and ensure ‘Customer Portal’ profile has View checked.
b) Portal User Profile Permissions: Setup > Security Control > Profiles > Customer Portal Profile. Under ‘Module Permissions’, verify Loyalty Program has ‘Read’ access and under ‘Field Permissions’, check that custom fields are not restricted.
c) Record-Level Sharing: If you have record-level sharing rules, customers might not have access to their own Loyalty Program records. Go to Setup > Security Control > Sharing Settings > Loyalty Program and ensure the sharing rule allows customers to view their own records (usually based on Contact ownership).
d) Portal Enabled Flag: Setup > Customization > Modules > Loyalty Program > Fields. Click on ‘Reward_Points_Balance’ and in the field properties, verify these settings:
- ‘Show in Portal’ checkbox is enabled
- ‘Portal User Can Edit’ is disabled (unless you want them to edit)
- ‘Display Type’ is set appropriately (not hidden or system field)
Testing and Verification:
After making these changes:
- Clear the portal cache: Setup > Channels > Customer Portal > Settings > Clear Cache
- Log out and log back in as a test customer (or use incognito mode)
- Check the browser console (F12) for any JavaScript errors that might block field rendering
- Verify at least one customer record has a non-zero value in Reward_Points_Balance
- Test with different customer portal users to rule out user-specific permission issues
The most common causes I’ve seen are: (1) forgetting to click ‘Publish Layout’ after adding the field, (2) missing field mapping entry for custom fields, and (3) record-level sharing preventing customers from seeing their own Loyalty Program records. Work through these three areas and the field should start appearing in the portal. If it still doesn’t show after all this, check if there’s a custom portal theme or CSS that might be hiding fields with certain naming patterns.