The AppExchange listing is currently in security review. Until it’s
live, installs are via direct package URL (contact
support@yotel.in).
What’s in the package
| Component | What it does |
|---|---|
| Auth Provider | OIDC client config — Salesforce runs the OAuth dance against Yotel |
Named Credential Yotel_API | Apex reaches Yotel via callout:Yotel_API/... — no tokens in code |
Permission Set Yotel User | Assign to any user who’ll use the integration |
| Apex classes | YotelClient, Campaigns, Leads, Calls — typed wrappers |
| ”Push to Yotel” LWC | Quick action on Contact + Lead record pages |
Install
1. Install the managed package
Click the install link from the AppExchange listing (or the direct URL from support). Choose “Install for All Users” unless your compliance policy requires gated access.2. Register Yotel as a Connected App tenant
In the Yotel dashboard:- Settings → Connected Apps
- Register client → name: “My Salesforce Org”
- Copy the generated
client_idandclient_secret— the secret is shown once
3. Configure the Auth Provider
In Salesforce:- Setup → Auth. Providers → Yotel → Edit
- Replace
__YOTEL_CLIENT_ID__with yourclient_id - Replace
__YOTEL_CLIENT_SECRET__with yourclient_secret - Save
4. Authenticate the Named Credential
- Setup → Named Credentials → Yotel API
- Click Authenticate
- Salesforce redirects to Yotel’s
/oauth/authorizeconsent screen - Review the scopes, click Allow
- You’re redirected back with a green “Authenticated” indicator
5. Assign the Permission Set
Setup → Permission Sets → Yotel User → Manage Assignments → assign to all users who’ll use the integration.6. Add “Push to Yotel” to record pages
- Navigate to a Contact → gear icon → Edit Page (Lightning App Builder)
- Drag the Push to Yotel Lightning Web Component onto the page
- Save and activate
- Repeat for the Lead object
Usage
On any Contact or Lead:- Select a running Yotel campaign from the dropdown
- Click Push to Yotel
- You’ll see a toast with the Yotel
lead_id
Using Apex directly
For custom integrations — batch Apex, triggers, flows — call the Apex wrappers yourself:sdks/salesforce
source for the full Apex API surface.
Troubleshooting
Auth Provider showsinvalid_client:
- You pasted the wrong
client_secret, or the one whose secret was rotated. Register a new client in Connected Apps and retry.
- Your Salesforce org is likely on the “My Domain” URL that isn’t
whitelisted. Make sure the registered
redirect_uriexactly matches what Salesforce emits (Setup → Auth. Providers → Yotel → “Callback URL” field).
callout:Yotel_API returns 401:
- Token expired and refresh failed. Re-authenticate the Named Credential. If this happens frequently, increase the refresh cadence on your side or contact support.
- The LWC filters to
status == running. Start a campaign from the Yotel dashboard first. Drafts and archived campaigns are intentionally hidden.
Security notes
- Tokens are stored server-side in Salesforce’s Named Credentials — never reach client devices, never appear in Apex source.
- The package uses
with sharingon all classes, so record-level sharing rules apply. - FLS hardening (
WITH USER_MODEon SOQL) is planned for the next release when we bump to API 60+.