Introw honours Salesforce security at every layer. Reads and writes run in the user’s context (CRUD, field-level security, and sharing all apply), so Introw can never reach data the connecting user can’t.
Use a dedicated integration user
Because Introw inherits the connecting user’s permissions, connect with a dedicated Salesforce integration user rather than a person’s own login. We recommend this to every customer, and it’s the cleanest way to run the integration:Least privilege
A permission set scoped to exactly the objects and fields your program uses is the boundary of what Introw can touch.
Survives staff changes
The connection isn’t tied to a person, so it doesn’t break when someone changes roles or leaves.
Auditable
Every Introw change is attributed to one clearly-named user in your Salesforce audit trail.
Allow the Introw connected app
This is the most common blocker on a first Salesforce connection, and it is worth planning for rather than discovering. Since September 2025 Salesforce refuses OAuth authorization for any connected app that is not installed in the org, unless the authorizing user holds a permission that exempts them. System administrators hold that permission by default, which is why an admin’s own quick test succeeds while the dedicated integration user we recommend fails on the same org. Already-connected orgs are unaffected. Salesforce keeps honouring an authorization completed before the restriction, so this only bites a new connection or a new connecting user. Switching an existing integration to a fresh integration user counts as new. Expect the first attempt to fail, and let it. Salesforce only lists a connected app for your org once the org has actually received a request for it, so there is nothing to install until someone has tried to connect. When the attempt is refused, Salesforce ends the flow on its own page and never redirects back, so Introw records nothing at all: no connection, no error, no half-finished integration to clean up. What you see is Salesforce’s message, “We can’t authorize you because of an OAuth error. For more information, contact your Salesforce administrator.”, witherror=invalid_client and error_description=app+must+be+installed+into+org in the URL.
1
Attempt the connection once and let it fail
Run the connect flow in Introw (Connect Salesforce) as the user Introw should run as. The refusal is what puts the app on your org’s radar.
2
Open Connected Apps OAuth Usage
In Salesforce, open Setup and search Quick Find for
OAuth, then select Connected Apps OAuth Usage (under Apps > Connected Apps). The page lists every connected app the org has seen a request for, installed or not, which is why the failed attempt had to happen first.3
Read the Introw row
Find the row named Introw. Your refused attempts are counted under Denied Attempts Due to Usage Restriction, with a timestamp in Last Denied Attempt Due to Usage Restriction, and User Count stays at 0 because nobody completed authorization. App Status still reads Allowed, which trips people up: nobody blocked Introw, the restriction applies because the app is not installed. The available actions on the row are Block and Install.
4
Install the app, or exempt the connecting user
Both routes below unblock the connection. Installing is the better default. Pick one, then authorize again from Introw.
Option A: install the app (recommended)
Select Install on the Introw row and confirm. Salesforce converts it into an installed connected app in your org, which means the app now sits under your own access controls instead of Salesforce’s blanket restriction. Then decide who may authorize it. Open Setup > Manage Connected Apps, select Introw, and set the Permitted Users OAuth policy:
If you choose Admin approved users are pre-authorized, assign the integration user’s profile or permission set to the app before reconnecting, or the authorization is refused again for a different reason.
Prefer this route: the decision is recorded on the app itself, it survives staff changes, it does not widen what anyone can authorize elsewhere in Salesforce, and it is the version a security reviewer will accept.
Option B: grant the connecting user the permission
Enable Approve Uninstalled Connected Apps for the user who authorizes Introw, under System Permissions on a profile or, better, a permission set assigned only to that user. They can then authorize Introw without the app being installed in the org.Verify the app is allowed
Reconnect from Introw. The Salesforce approval screen now appears, the connection completes, and back on Connected Apps OAuth Usage the Introw row shows User Count at 1 (your integration user) with the denied-attempt counter no longer climbing. If you installed the app, it also appears under Setup > Manage Connected Apps, where you can revoke it at any time.OAuth scopes
Introw connects via OAuth (a modern External Client App, or a connected app). It requests three scopes:
The connection uses PKCE and a rotating refresh token. Scopes define what the token can do at the API level; the integration user’s permissions still decide which objects and fields are actually reachable.
What access Introw needs
The principle is simple: Introw only needs access to the objects you embed in the portal or report on - nothing else. Read and write are managed separately per object and field (through the permission set and field-level security), so you can grant read-only broadly and write only where you need it.Minimal baseline (read)
To identify partners and their people, Introw reads a small set of standard fields:
Any other standard or custom Account/Contact field you want in Introw (for segments, reports, portal columns) just needs read access on that field.
Per object you collaborate on or include
For each additional object you want in the portal or in reporting - Opportunity, Case, a custom object, … - Introw needs two things:- Read on the object and the fields you pull in - the properties you display in Introw or expose to partners.
- Read on whatever links it to a partner - the attribution, whether that’s the OpportunityPartner junction, or a lookup/picklist field on the record. See Attribution in Salesforce.
When Introw needs write access
Reads cover most of the program. Introw needs write access only for the specific, opt-in actions you configure:
Everywhere else, Introw follows a safe default: it only writes fields you’ve mapped or a form is set to write, defaults to never overwriting a value that’s already set, and never mass-edits records. See CRM field mapping.
How Introw shows you what it is missing
Least privilege only works if a gap is visible. Because Introw inherits the connecting user’s access, a shortfall does not look like an error: it looks like Introw being wrong. A partner count comes back short, a mapped field never lands, a submission saves without half its values. So Introw checks what the connection is actually allowed to do and marks the shortfall on the screen where you would otherwise configure something that cannot work.- On the integration’s Object linking step, every linked object carries a verdict pill with the reasoning on hover: Read-only, Partly visible, Fields read-only, Record types limited, Cannot read back, and the rest. The panel opens with one line naming the connection and whether the check ran at all.
- On a form’s Automation tab, each CRM object automation the connection cannot write carries a warning, and every unwritable property is struck through in the picker with its reason. No write permission for this connection is the one you can fix; Calculated in your CRM and Managed by your CRM are not.
- Re-check after changing permissions re-probes on demand, so a permission set you just assigned shows up immediately rather than after the cache expires.
Two Salesforce facts shape what you will read there. A field Salesforce refuses field-level security on, such as a formula or a derived field, is reported as Managed by your CRM rather than as a missing permission, so a full admin connection stays quiet. And Salesforce will not report records the connecting user may not see, so Partly visible can tell you the view is partial but never how much is missing.
In short
1
Create a dedicated integration user
A named Salesforce user Introw connects as.
2
Grant a scoped permission set
Read on Account, Contact, and User baseline fields; read on each object (and its partner link) you embed or report on; write only where forms create records or partners edit fields.
3
Authorize Introw as that user
Introw then operates strictly within that permission set - your one, auditable boundary.
4
Confirm which user it actually connected as
On Integrations, open Salesforce: the detail header names the Salesforce user the connection authenticates as, with their username and the instance in the tooltip. If it names an admin rather than your integration user, select Reconnect from the three-dots menu and authorize again while logged in as the integration user.
Related
Connect Salesforce
The end-to-end connection and setup flow.
Attribution in Salesforce
How objects link to partners - the access Introw needs to read attribution.
Show & rename CRM fields
Choose which fields to pull in and expose - each needs read (and edit, if editable).
Embed Introw in Salesforce
Place the Introw component on record pages (the Lightning scope).
Every CRM error Introw logs
Where a permission gap is reported, and what each verdict means.