Salesforce Customer Self-Service Portal

A secure portal that surfaces order, contract, and support status from Salesforce while preserving record-level access control.

Challenge

Customers had to contact account staff whenever they needed order, contract, or support status, creating service workload and duplicate entry across systems. The solution needed customer-level access control and timely updates without exposing Salesforce directly.

Solution

Extended Salesforce with Apex, Lightning Web Components, and Platform Events, then connected it asynchronously to a Next.js portal. Controlled access with OAuth, Named Credentials, and Sharing Rules, and added scheduled reconciliation with Apex jobs.

Result

Enabled customers to review order, contract, and support status independently, creating an operating model that reduces status inquiries and duplicate data entry.

Team

3 members, 6 months

Salesforce, API integration, and frontend development

Role

Handled Salesforce customization, integration design, and portal development.

Developed Apex and Lightning Web Components, designed event-driven synchronization, and built the customer-facing Next.js experience.

Tech Stack

CRMSalesforce
FrontendNext.js / React / TypeScript / Tailwind CSS
SalesforceApex / LWC / Flow Automation
IntegrationREST API / Platform Events
SecurityOAuth / Named Credentials / Sharing Rules
CI/CDGitHub Actions / Salesforce CLI

Key Features

01

Salesforce screens built with Lightning Web Components

02

Event-driven synchronization through Platform Events

03

Customer portal for orders, contracts, and support cases

04

Record-level access control with Salesforce Sharing Rules

05

Scheduled reconciliation for failed or missing events

Technical Highlights

Access Control at the CRM Layer

Combined OAuth and Salesforce Sharing Rules so record permissions are enforced by the platform, not only by portal code.

Events Plus Reconciliation

Paired real-time Platform Events with scheduled resynchronization to recover from missed events and preserve data consistency.