Overview
Setup guide
Customization
Troubleshooting
Overview
Key capabilities
For Account Executives & CSMs
- See engagement for any Contact or Lead. View the communities they’ve joined and how active they are.
- Analyze engagement by Account. Aggregate activity across every associated Contact, and report on it by deal value.
For Community Managers
- Prove the community’s impact. Compare deal performance across engagement levels to show how community drives revenue.
How it works
The integration consists of two parts: a Salesforce Managed Package installed in your Salesforce org, and a connection configured in the Tightknit Admin Studio. Once the integration is enabled, Tightknit pushes community and member profile data to Salesforce, populating custom Tightknit Community and Community Member records. It also begins a periodic sync of all new community activity, creating Community Activity records in Salesforce.- Records are pushed using the Bulk API 2.0.
- Activity syncs run every 5 minutes, batching all new activity within that interval.
- Members are linked to Contacts and Leads by email matching. Linking is not affected by the creation setting below: the sync links every member it can match on either object. Lead linking additionally requires managed package v1.13+ and Lead Read for the integration user. You can manually override any incorrect links.
- Members with no match can get a new record created for them. The Create Contacts or Leads setting controls whether the sync creates nothing, a new Contact, or a new Lead. Contact and Lead are handled independently, so a member who already matches a Contact still gets a Lead when the setting is Leads.
- Members whose email is longer than 80 characters aren’t synced. Salesforce email fields hold at most 80 characters, so these members and their activity are skipped, and the sync job shows a warning with how many.
- An initial backfill sync imports your existing historical data when you first enable the integration.
Data model
The managed package includes three custom objects in a simple parent-child hierarchy, plus configurable lookups that link each member to a standard Salesforce Contact or Lead:Community__c appears as tightknit__Community__c in reports, list views, and SOQL.Setup
Complete these steps once, in order, to install the managed package, connect your Salesforce org to Tightknit, and start syncing community data.Before you begin
Plan who will do the setup, and how they will connect. Completing the connection requires a real, interactive Salesforce login, which determines who can do it and which configurations are supported:- The user setting up the connection within the Tightknit Studio must be able to log into Salesforce using the integration user’s real credentials. Salesforce’s “Login As” feature does not work for this. OAuth authorization is blocked inside an impersonation session and fails with Insufficient Privileges.
- The integration user needs a UI-login-capable license. The free Salesforce Integration license is API-Only (no UI login) and cannot complete the connection. Use a Salesforce Platform license or a standard Sales/Service Cloud seat, kept least-privilege with the Tightknit permission sets.
- Connect a production org, not a sandbox. Sandbox orgs are not supported.
Install the managed package
- Installation Link
- Salesforce CLI

https://<domain>.my.salesforce.com/packaging/installPackage.apexp?p0=04tdM000000d1aXQAQPrepare Salesforce
- Integration user — a dedicated Salesforce user account that Tightknit signs in with to sync data, instead of using a real person’s account. Think of it as a robot account.
- Permission set — a switchable bundle of permissions you assign to a user. Salesforce starts locked down, and permission sets are how you hand out exactly the access something needs. Tightknit ships ready-made ones, so you assign rather than build them.
- License — the type of seat a user occupies. It caps what that user can do, and a permission set can only switch on access the license already allows.
- External Client App — the pre-built component that lets Tightknit sign in to your org securely (the OAuth handshake).
Assign yourself the Tightknit Admin permission set
- In Salesforce, go to Setup. In the Quick Find search box, type
Permission Setsand click it. - Click Tightknit Admin in the list.
- Click Manage Assignments, then Add Assignment.
- Check the box next to your own user, click Next, then click Assign.
Open the Setup tab in the Tightknit app

Search for Tightknit in the App Launcher and select the Tightknit app. Setup lives on its Tightknit Setup tab.
Run the setup wizard to create your integration user
Grant the integration user access to Contacts and Leads
- The object’s org-wide default is Public Read Only or wider. The integration user sees every record, so creation is allowed. Nothing else is needed.
- The default is private. Tightknit reads the integration user’s permission assignments to confirm View All Records (or View All Data). Reading them needs View Setup and Configuration, so grant that too. If Tightknit can’t read the assignments, it can’t rule out hidden records, and creation stays off.
- Salesforce doesn’t return the org’s sharing settings at all. Tightknit creates nothing that time. This is usually temporary: Studio asks you to try again, and the sync tries again on its next run.
- Add a minimal extra permission set (recommended). Create a new permission set, grant the object access described above, and assign it to the integration user alongside the Tightknit one. This is the cleanest option because it adds access without touching anything else, and survives package upgrades.
- Edit the integration user’s profile. Open the profile the integration user is on and grant the same object access there.
Configure the External Client App OAuth policies
- Go to Setup, and in Quick Find open External Client App Manager.
- Click Tightknit Salesforce, open the Policies tab, and click Edit.
- Under OAuth Policies:
- Permitted Users: “Admin approved users are pre-authorized” (recommended), so only users you authorize can connect. You can choose “All users may self-authorize” instead, but it is less restrictive.
- Refresh Token Policy: “Refresh token is valid until revoked”, so the connection doesn’t expire on its own.
- IP Relaxation: “Relax IP restrictions” unless your security team requires otherwise.
- Click Manage Permission Sets and add Tightknit Integration User (plus Tightknit Admin if the integration user is also an admin). This authorizes the integration user under the “Admin approved” policy. Skipping it is the most common setup mistake and causes the connection to fail (
OAUTH_APP_ACCESS_DENIED, “user is not admin approved to access this app”, orOAUTH_APPROVAL_ERROR_GENERIC). - Save.
Assign the Tightknit Users permission set group to end users (optional)
Run the Health Check (optional but recommended)

The Health Check on the Tightknit Setup tab flags any Org-Wide Default sharing setting that would hide synced data from other users in the org. Each finding has a Fix in Setup button that opens the relevant Sharing Settings page in a new tab.
Grant Studio access
If your Salesforce administrator is not already a Studio user, you need to invite them and assign the Integrations Manager role so they can manage the Salesforce connection.Invite the user
Assign the Integrations Manager role
Connect in Tightknit
Open the Salesforce integration settings

Salesforce integration settings page with the Connect button.
Connect to Salesforce from the Tightknit App
Start the sync
After connecting your Salesforce org, the settings page presents a three-step timeline wizard: Connect, Configure, and Backfill. You can adjust every sync option before starting the sync for the first time.Connect
Configure sync settings
-
Create Contacts or Leads — whether Tightknit creates a Salesforce record for members who don’t have one yet. It never affects linking: every sync links members to any Contact that matches their email, and to any unconverted Lead once the managed package is on v1.13 and the integration user can read Leads, whichever option you pick. The setting only decides what gets created when there’s no match, and on which object.
The setting applies to all members, not just new ones. Members who were already in your community are worked through a few hundred per sync, so a large community can take several syncs to finish. To do it all at once, use Run backfill again on the Initial backfill step in Studio.
- None — Tightknit creates no Contacts or Leads. Members with no match sync unlinked, and members that match a Contact or unconverted Lead are still linked.
- Contacts — Tightknit creates a Contact for each member whose email doesn’t match an existing Contact. Requires Create on Contact for the integration user.
-
Leads — Tightknit creates a Lead for each member whose email doesn’t match an unconverted Lead, even if the member already has a Contact. Leads have looser validation than Contacts, so this suits orgs whose validation rules block Contact creation, and it lets you clean up the data before converting a Lead to a Contact. Requires managed package v1.13+ and Read and Create on Lead for the integration user.
- Members that already match an unconverted Lead are linked to it instead of getting a duplicate.
- A member whose only Lead was already converted gets no new Lead and no Lead link, since their live record is the Contact.
- Salesforce requires a Company on every Lead and Tightknit profiles don’t have one, so created Leads use
[not provided].
Switching options later keeps what you already have. Records Tightknit created stay in Salesforce, and existing links stay in place, because every sync matches against both objects whichever option is selected. Moving from Leads to Contacts doesn’t unlink anyone’s Lead, and moving to None leaves every link in place. Moving from Contacts to Leads gives a new Lead to every member without one, including members who already have a Contact, so those people end up with both a Contact and a Lead. Only what gets created changes, and the new option works through existing members over the following syncs, as described above. - Lead source — an optional value Tightknit puts in the standard Lead Source field of every Lead it creates. Studio asks for it when you choose Leads, starting from any value you saved before, so even the first Leads get it. You can change it later in the field under the setting; a change applies only to Leads created afterward. Use one of your Lead Source options in Salesforce. If your org only accepts the options on its list (a restricted picklist), any other value would get every Lead rejected, so Studio checks the value before saving it.
- Member matching field — how Tightknit finds a member’s Contact or Lead. It’s always Email, and read-only.
- Activity Metadata — include additional metadata fields on synced Activity records.
- Sync interval — how frequently incremental syncs run (for example, every 5 minutes).
Review and start the sync
Manage the integration

The Salesforce integration page in Studio
Monitor sync history
The Sync History tab shows a log of every sync job (backfill and incremental) with explicit counts of succeeded and failed records. Expand any row to see a summary of that sync run. Investigating failed sync jobs. When a sync job has failures, the expanded row shows an Investigate button. Clicking it opens a detail page with:- A summary of the sync job (status, timing, record counts).
- A breakdown of the underlying Salesforce Bulk API jobs, showing per-object totals for processed, succeeded, and failed records.
- Record failures, such as Contacts or Leads Salesforce refused to create, each linked to the member it belongs to.
Disconnect
Disconnecting requires two separate actions in the Studio: one to tear down the integration connection, and one to revoke the underlying Salesforce OAuth account.Disconnect the integration connection

Overflow menu next to the Connection heading: select Disconnect.
Disconnect the Salesforce account

Overflow menu on the connection widget: select Disconnect account.
Refresh the page
Additional customization
LWC components
The managed package includes custom Lightning Web Components that surface community data on your Salesforce records. On the Tightknit objects, this is already done. The Tightknit Community, Community Member, and Community Activity record pages ship configured, so those components appear as soon as the package is installed. On Account, Contact, and Lead, you add them yourself. Salesforce does not let an installed package change your Account, Contact, and Lead pages, so those are up to you. Open a record, choose Setup menu › Edit Page, drag the component from the left-hand list onto the layout, then Save and Activation. The package also ships sample Account, Contact, and Lead pages you can copy from. We recommend exploring the following components:Component previews
Select a component to see it in action. Click any image to view it at full size.- Account Community Activity Summary
- Activity Info
- Community Activity Summary
- Community Profile
- Contact Member Activity Log
- Member Activity Log

Community activity for contacts associated with an Account, with per-contact activity counts.
Permission sets
The Tightknit package ships three permission sets, each aimed at a different kind of user. Each bundles the full access that user needs, so you don’t have to assign individual permissions. To assign any of them: go to Setup → Permission Sets, click the set, click Manage Assignments → Add Assignment, pick the users, and click Assign. Here’s who gets which one:Permission set group
The package also ships a Tightknit Users permission set group. A permission set group bundles permission sets into a single assignable unit: you assign the group to a user and they receive the combined access of every set inside it. Tightknit Users currently contains Tightknit Read Only, and it is the recommended way to grant end-user access. Assign the group instead of the underlying permission set: when future versions add new end-user capabilities to the group, everyone already assigned picks them up automatically, with no re-assignment needed.Building your own integration user permission set (advanced)
ApiEnabled— the OAuth token can’t make API calls without it. Required even on profiles that already have API access, so the integration user works on restricted profiles like Minimum Access - Salesforce or the Salesforce Integration license.
Contact: Read — the sync queries Contacts by email to link Tightknit members to existing CRM Contacts, and theMember__c.Contact__clookup field needs the target object to be readable in the user’s schema.Contact: Create — also required if you set Create Contacts or Leads to Contacts in Start the sync. Without that, Read alone is sufficient.Lead: Read — required to link members to existing Leads at all, in every creation mode. It lets the sync match unconverted Leads by email and resolve theMember__c.Lead__clookup (package v1.13+). Without it, Lead linking is silently skipped.Lead: Create — also required when Create Contacts or Leads is set to Leads. Without that, Read alone is sufficient.ContactorLead: View All Records — required on the object a creation option creates, unless its org-wide default is Public Read Only. Email matching only sees records the integration user can see, so records hidden by sharing would be created again.- View Setup and Configuration: required alongside View All Records when that object’s org-wide default is private, so Tightknit can read the user’s permission assignments and confirm the grant. Without it, a creation option stays off on a private object.
Community__c, Member__c, and Activity__c, grant: Create, Read, Edit, Delete, View All Records, and Modify All Records.
Standard CRUD lets the sync upsert records. Modify All Records is required because Bulk V2 upserts return INSUFFICIENT_ACCESS_OR_READONLY in orgs with Private OWDs or when record ownership has been reassigned away from the integration user. It is the easiest grant to overlook and the most common cause of sync failures on a hand-rolled permset.
Field-level security on the Tightknit custom objects
Grant Read + Edit on every field the sync writes across the three Tightknit objects.
The cleanest approach is to grant Read + Edit on all custom fields on Community__c, Member__c, and Activity__c. That keeps your permset correct across package upgrades without per-version edits.
Troubleshooting
The Tightknit app doesn't appear in the App Launcher
The Tightknit app doesn't appear in the App Launcher
Member sync fails with 'Field name not found: tightknit__Contact__c' (or tightknit__Lead__c)
Member sync fails with 'Field name not found: tightknit__Contact__c' (or tightknit__Lead__c)
tightknit__Contact__c: the integration user can’t see the standard Contact object, so the Member__c.Contact__c lookup is unresolvable. The Tightknit permission set cannot grant access to standard objects (a Salesforce platform limitation), so this must be granted separately. Grant the integration user Read on Contact (see Grant the integration user access to Contacts and Leads). Add Create as well if you set Create Contacts or Leads to Contacts.For tightknit__Lead__c: the sync detects this field before each run and omits the column when the org lacks it, so an older package or missing Lead access does not produce this error; it turns Lead linking off instead. The error means access was removed after a successful check, inside the hour that result is cached. Restore field-level Read and Edit on Member__c.Lead__c (and Read on Lead) for the integration user; the sync recovers on its own once the cached check expires, within an hour.Leads aren't being created, or Lead creation fails for some members
Leads aren't being created, or Lead creation fails for some members
- Missing Lead access. The integration user needs Read and Create on the Lead object, including the Email, Name, and Company fields. Studio won’t let you choose Leads until this is granted, but access can regress afterwards.
- Lead validation or duplicate rules. Org validation rules and duplicate rules apply to Leads the sync creates. A common case is a duplicate rule set to Block Leads matching an existing Contact, which rejects every member who already has a Contact. The failed records appear in the sync job’s failure log with the Salesforce error; the affected members still sync, just without a Lead link. Rejected members are not retried on later incremental syncs; once the rule is relaxed, use Run backfill again in Studio. Failures Salesforce does not attribute to a rule, such as an error in your own automation, are retried automatically about once a day.
- Restricted Lead Source picklist. Studio checks the configured Lead source against the picklist when you save it. If the picklist changes afterwards so the value is no longer active, the sync stops before creating any Lead and the sync job says so. Change the value in Studio or add it to the picklist.
Studio won't turn on Contact or Lead creation: it can't confirm visibility
Studio won't turn on Contact or Lead creation: it can't confirm visibility
The connection test reports missing object or field access
The connection test reports missing object or field access
Member__c.Contact__c.Object describes fail even with the permission set assigned
Object describes fail even with the permission set assigned
A field or object looks accessible in Setup, but the sync still fails on it
A field or object looks accessible in Setup, but the sync still fails on it
Connecting in Studio fails with 'Something went wrong' / 'We couldn't complete the connection'
Connecting in Studio fails with 'Something went wrong' / 'We couldn't complete the connection'
OAUTH_APP_ACCESS_DENIED(“user is not admin approved to access this app”). Your org requires admin approval for the Tightknit Salesforce External Client App, and the user completing the connection isn’t authorized for it. Fix it in Setup → External Client App Manager → Tightknit Salesforce → Policies → OAuth Policies → Permitted Users: either set “All users may self-authorize”, or keep “Admin approved users are pre-authorized” and click Manage Permission Sets to add a permission set the connecting user holds (for example Tightknit Integration User or Tightknit Admin). See Configure the External Client App OAuth Policies, then retry the connection in Studio. The relatedOAUTH_APPROVAL_ERROR_GENERICerror has the same cause and fix.- Connecting a sandbox org. Sandbox orgs aren’t supported and fail the OAuth the same way, so connect a production org instead. See Known issues.
- The integration user can’t log in (Salesforce Integration / API-Only license). If you connect as a user on the Salesforce Integration license or API Only profile, the interactive OAuth login is blocked and Login History shows a login failure. Connect as a UI-login-capable user instead (see the license note in Run the setup wizard).
The backfill shows 'Failed', or some records didn't sync
The backfill shows 'Failed', or some records didn't sync
Activities fail with 'Foreign key external ID … not found'
Activities fail with 'Foreign key external ID … not found'
I'm not seeing any records in the Tightknit object list views, or no data shows up in the components
I'm not seeing any records in the Tightknit object list views, or no data shows up in the components
Synced records aren't visible to other users in Salesforce
Synced records aren't visible to other users in Salesforce
Reference
Known issues
- Salesforce sandbox orgs are not supported. You can install the managed package in a sandbox and explore the Lightning Web Components (LWCs) by populating Community, Member, and Activity records manually. However, connecting a sandbox org to Tightknit is not supported yet (this is a work-in-progress feature). To run the full integration, connect a production org instead.
- Salesforce configuration is shown per Studio user, not tenant-wide. The Studio currently scopes the Salesforce integration settings to the Studio user who configured them, instead of sharing them across the tenant. Other Studio admins on the same tenant cannot see or collaborate on the same connection. We’re working on making this configuration tenant-wide.
Planned features
- Pre-built report templates
Create Memberquick action button on Contact detail page- Support for Parent Accounts
- More sync interval options
- Custom configuration for linking Tightknit Members to Contacts (beyond email matching)






