
Introduction to External Client Apps in Salesforce
Salesforce integrations are evolving fast. If you’re still relying only on Connected Apps, you might already be a step behind. Salesforce introduced External Client Apps to provide a more secure, scalable, and future-ready way to integrate external systems.
Think of it like upgrading from a basic lock to a smart security system—same goal, much better control.
What Is an External Client App?
An External Client App is a Salesforce app type designed specifically for external applications—such as mobile apps, web apps, backend services, or SaaS platforms—that need secure access to Salesforce APIs using OAuth 2.0.
Unlike Connected Apps, External Client Apps are not tied to a specific user context by default, making them ideal for modern machine-to-machine and multi-tenant integrations.
A key concept that uniquely defines an External Client App is its Distribution State. The distribution state determines where and how the app can be used—whether it is restricted to a single Salesforce org or distributed across multiple orgs, customers, or environments. This capability fundamentally differentiates External Client Apps from legacy Connected Apps.
Why External Client Apps Matter Today
Salesforce is actively steering developers toward External Client Apps because they:
Offer better security isolation
Support modern OAuth flows
Are optimized for machine-to-machine communication
Align with Salesforce’s long-term API and integration strategy
If you’re building anything external today, this is the direction Salesforce expects you to follow.
Understanding Salesforce App Types
Before creating one, it’s important to understand how External Client Apps differ from traditional Connected Apps.
External Client App vs Connected App
Both use OAuth. Both allow API access. But they are not interchangeable.
Key Differences You Must Know
Distribution State: The Defining Difference
The Distribution State is one of the most important—and least documented—features of External Client Apps.
It defines whether an app is:
Local – Used only within the Salesforce org where it is created
Distributable – Intended to be shared across multiple Salesforce orgs, customers, or tenants
This setting directly impacts how the app authenticates, scales, and complies with Salesforce’s security model. Unlike Connected Apps, which are inherently org-bound, External Client Apps are designed with distribution and multi-org usage in mind from the start.
When to Use Each App Type
Use External Client Apps for:
Backend services
SaaS integrations
Mobile or web applications
Multi-org or customer-facing integrations
Use Connected Apps only for:
Legacy systems
Salesforce UI extensions
What You Need Before Creating an External Client App
Preparation saves hours of debugging later.
Salesforce Org Requirements
Make sure:
You have System Administrator access
Your org is Enterprise, Unlimited, or Developer Edition
API access is enabled
OAuth and Authentication Basics
External Client Apps rely fully on OAuth 2.0, so understanding tokens is essential.
Supported OAuth Flows
Client Credentials Flow
Authorization Code Flow
JWT Bearer Flow
Each flow serves a different use case—choose based on your architecture.
Step-by-Step Guide to Create External Client App in Salesforce
Let’s walk through the setup.
Step 1 – Log in to Salesforce Setup
Log in to Salesforce
Click Setup (top-right corner)
Step 2 – Navigate to External Client Apps
In Setup:
Search for External Client Apps
Click External Client Apps
Select New External Client App
Step 3 – Create a New External Client App
This is where your app takes shape.
App Name, API Name, and Contact Email
App Name: Human-readable (e.g., My Integration App)
API Name: Auto-generated
Contact Email: Used for security and system notifications
Distribution State Selection
During creation, you must define the Distribution State of the External Client App.
Local apps are restricted to the current Salesforce org
Distributable apps are designed for use across multiple orgs or customer environments
This decision directly affects scalability and reuse. Choosing the wrong distribution state can limit how your app can be deployed later.
Step 4 – Configure OAuth Settings
Enable OAuth and configure secure access.
Callback URL and Scopes
Callback URL: Required for Authorization Code flow
Scopes:
apirefresh_tokenopenid(optional)
Grant only what your app actually needs.
Step 5 – Save and Activate the App
Click Save
Activate the app
Copy the Client ID and Client Secret
Store these securely. Treat them like passwords.
Configuring Security and Access
Security is not optional.
Assigning Permission Sets
Create a permission set
Assign required API permissions
Link it to the External Client App
Token Policies and Expiration
Define:
Access token lifespan
Refresh token behavior
Refresh Token Best Practices
Rotate secrets regularly
Revoke unused tokens
Monitor token usage
Testing Your External Client App
Always test before production.
Generating Access Tokens
Use tools such as:
Postman
Curl
OAuth playgrounds
Validating API Calls
Test basic operations:
Query Accounts
Fetch User or Org data
Common Testing Errors and Fixes
Invalid scope → Review OAuth settings
Unauthorized → Verify permission sets
Token expired → Refresh the token
Real-World Use Cases for External Client Apps
This is where External Client Apps truly shine.
Mobile Applications
Ideal for:
iOS apps
Android apps
React Native or Flutter apps
Server-to-Server Integrations
Perfect for:
ETL pipelines
Middleware platforms
Background jobs
These integrations typically rely on Distributable External Client Apps to support multi-org deployments.
Third-Party SaaS Integrations
Excellent for:
SaaS platforms
Analytics tools
Automation systems
SaaS providers depend on Distributable distribution states to connect securely with multiple Salesforce customer orgs.
Best Practices for External Client Apps
Small habits make a big difference.
Security Best Practices
Apply least-privilege OAuth scopes
Rotate secrets periodically
Enable IP restrictions when required
Performance Optimization Tips
Cache access tokens
Minimize API calls
Use Bulk API for large data operations
Monitoring and Logging
Track authentication failures
Monitor token usage
Set alerts for unusual activity
Common Mistakes to Avoid
Using Connected Apps Instead
Salesforce recommends External Client Apps for all new external integrations. Avoid building on deprecated patterns.
Over-Permissive OAuth Scopes
Granting excessive access increases security risk without benefits.
Ignoring the Distribution State
Treating External Client Apps like Connected Apps and overlooking the Distribution State is a common mistake. Choosing the wrong state can limit scalability or require recreating the app later. Always align the distribution state with your deployment model from day one.
External Client Apps and Salesforce APIs
They work seamlessly together.
REST API Integration
Best suited for:
Real-time operations
Lightweight requests
Bulk and Streaming APIs
Use when:
Handling large data volumes
Subscribing to platform events
API Limits and Considerations
Respect daily API limits
Implement proper rate limiting and retries
Troubleshooting External Client App Issues
Even well-configured apps can encounter issues.
Authentication Failures
Verify client credentials
Confirm OAuth flow selection
Authorization Errors
Check assigned permission sets
Validate OAuth scopes
Future of External Client Apps in Salesforce
Salesforce has made its direction clear.
Salesforce’s Shift Away from Connected Apps
External Client Apps are:
More modular
More secure
More scalable
What to Expect Next
Improved tooling
Enhanced OAuth controls
Deeper API governance
Conclusion
Creating an External Client App in Salesforce is more than a setup task—it’s a strategic architectural decision. It future-proofs your integrations, improves security, and aligns your systems with Salesforce’s roadmap.
With features like Distribution State, External Client Apps enable scalable, multi-org integrations that Connected Apps were never designed to handle. If you’re building anything external today, this approach is no longer optional—it’s essential.
FAQs
1. Is External Client App replacing Connected App in Salesforce?
Not entirely, but Salesforce strongly recommends External Client Apps for all new external integrations.
2. Which OAuth flow is best for backend integrations?
Client Credentials or JWT Bearer flow works best for server-to-server use cases.
3. Can External Client Apps access all Salesforce APIs?
Yes, provided the correct scopes and permissions are configured.
4. Do External Client Apps require a Salesforce user?
No. They can operate without a direct user context.
5. Are External Client Apps more secure than Connected Apps?
Yes. They offer improved isolation, token control, and modern OAuth handling.
6. What is the Distribution State in an External Client App?
The Distribution State defines whether an External Client App is restricted to a single Salesforce org (Local) or can be distributed across multiple orgs and customers (Distributable). It is a foundational difference from Connected Apps and directly affects scalability and usage.
Ready to transform your Salesforce experience?
Start exploring the Salesforce Exchange today and discover apps that can take your CRM efficiency to the next level.