WeSuite
Connect Selena AI to WeSuite so agents can search parts, build estimates, and write BOM results back into your system.
Why connect Selena to WeSuite?
WeSuite is where your team already builds and prices security-system estimates. Connecting it lets Selena work directly against your instance — resolving parts against your live catalog, reading and building real estimates, and writing BOM results back as line items — instead of producing output somebody has to re-key.
To get started, an admin goes to Dashboard → Integrations → WeSuite and runs the setup wizard. Each user then connects their own WeSuite account from Dashboard → Settings → Integrations → WeSuite.
WeSuite is typically on-premises, so setup asks for your own instance's URLs rather than signing in to a hosted service. The two URLs are needed at different moments:
- The API URL is what validation contacts. It has to be reachable from outside your network, or setup cannot complete.
- The QuoteAnywhere URL is never called by Selena. It is used to build the OAuth callback that gets registered in WeSuite, so it has to be correct and reachable by your users' browsers when they sign in — not by Selena.
Before you start
| Requirement | Why it is needed |
|---|---|
| Admin access to your Selena organization | Organization setup is admin-only |
| A WeSuite admin username and password | Used once, to validate the instance. Not stored, and not what users authenticate with |
| Your WeSuite API URL | The API endpoint Selena calls — usually ends in /api |
| Your QuoteAnywhere URL | Becomes the OAuth callback Selena registers in WeSuite for you, so there is nothing to copy by hand. Not contacted during validation |
| A publicly trusted TLS certificate, serving its full chain | Selena verifies the API's certificate strictly. A missing intermediate is refused before credentials are checked — see certificate chain |
| The ProgramOptions permission on that admin account | Only for optional data sync. Without it, setup still completes and sync can be enabled later |
Running into trouble validating? See Common Issues → Validation fails during organization setup.
Setting up the integration
Setup is two phases: an admin configures the organization once, then each user connects their own account. Both are required before anything works.
Phase 1 — Organization setup
Done once, by an admin, in Dashboard → Integrations → WeSuite. The wizard has three steps.
API configuration
Enter the two URLs and the admin credentials, then choose Validate Connection.
| Field | What it is | Example |
|---|---|---|
| WeSuite API URL | Your WeSuite API endpoint | https://wesuite.yourcompany.com/api |
| QuoteAnywhere URL | Your QuoteAnywhere front end | https://quoteanywhere.yourcompany.com |
| Admin Username | A WeSuite admin account, for validation | admin-username |
| Admin Password | That account's password — used only for validation | — |
These are two different systems. Both URLs are parsed before the wizard will advance, so
a missing https:// is rejected here rather than failing later.
Validate connection
On success the wizard reports the instance it found — WeSuite Customer ID, system name, API version, and the API URL — which is your confirmation that Selena reached the right instance and not a lookalike.
This step also offers data sync, described below. Leave it as-is if you are not sure; it can be changed at any time.
Complete setup
Choose Complete Setup. The configuration is saved against your organization, its
status moves to configured, and users can begin connecting.
Validation checks the credentials against WeSuite live, so a rotated admin password fails at step 1 — see Common Issues for the causes in the order worth checking.
Optional — enable data sync
Data sync copies your WeSuite data — estimates, projects, customers, and more — on a schedule, so Selena's answers are tailored to your business rather than assembled from whatever a single request could reach.
- It is opt-in, offered during setup and changeable afterwards from the integration page.
- Frequency is Daily or Hourly, and the panel shows Last synced plus a status of Ready, Syncing, or Failed.
- It requires the ProgramOptions permission on the validating admin account, because Selena provisions a WeSuite API key for it. Without that permission the option is locked off and reads Data sync unavailable — setup still completes, and everything else works.
- It can be disabled and re-enabled. Re-enabling issues a new API key and resumes the schedule.
Data sync is the one part of the integration that uses an organization-level key rather than acting as a user. Agent reads and writes never use it. If the panel asks you to reconnect, see Common Issues → Data sync shows "Action required".
Phase 2 — Each user connects their own account
Every user who wants Selena to act in WeSuite goes to Dashboard → Settings → Integrations → WeSuite and connects with their own WeSuite username and password. This is what makes Selena act as them.
From the same place a user can refresh their connection when the WeSuite session ages out, or disconnect entirely.
A user cannot connect before the organization is configured — their status reads
not_available. If your whole team is blocked, see
Common Issues → Everyone in the organization is blocked at once.
What Selena can do in WeSuite
With the integration connected, Selena can:
Read
| Capability | Detail |
|---|---|
| Parts catalog | Your live catalog, your organization's favorites, and accounting-system parts where those are configured |
| Estimates | Quote packages and line items, for pricing and review |
| Customers and contacts | Along with their locations |
| Projects and opportunities | Including pipeline rolled up by stage |
Write
| Capability | Detail |
|---|---|
| Create an estimate | No duplicate protection on either side — see duplicate writes |
| Add catalog parts in bulk | Carries a duplicate guard, so a repeat is ignored rather than written twice |
| Add one-time custom parts | For parts that are not in the catalog |
| Accept BOM results | Parts detected from a drawing or spreadsheet, written straight onto an estimate |
| Add notes | To an estimate, or to a customer account |
| Create and update records | Customers, contacts, locations, projects, opportunities |
Selena always acts as the connected user, using their own WeSuite session. It cannot see or change anything that user could not already see or change, and permissions, visibility, and audit trails in WeSuite stay exactly as they are. The single exception is data sync, which runs on an organization-level API key.
Using Selena with the WeSuite integration
Once connected, the integration is available to Selena's agents automatically — you do not wire anything up per conversation. Asking an agent to price a drawing, find a part, or build an estimate uses your WeSuite connection.
- Attach the estimate you mean. Type
@in the composer to search your WeSuite estimates and attach one as context. That is how estimate, BOM, and import requests land on the right quote package. - Reach for a
/command when you know the workflow./import-bomputs a spreadsheet BOM onto an estimate;/analyze-bomreads an estimate's existing BOM back and reports gaps and incompatibilities. - Review before accepting. A BOM import comes back in a panel showing resolved parts, the folder each lands in, and whether it is an add or an update. Nothing reaches WeSuite until you accept.
Two behaviors are deliberate and worth knowing:
Ambiguous part searches stop and ask. When an agent resolves a line item from search text rather than an exact part number, it returns candidates for you to choose from instead of silently picking one — even when there is only a single match. Silently guessing a part is how a wrong item ends up priced into a real quote.
Failed writes are never retried automatically. Selena reports the error and stops. Whether repeating a request is safe depends on the write: line items carry a duplicate guard, while a new estimate or an estimate note has none. If a write's outcome is unclear, check WeSuite before asking again.
Managing the integration
The integration page shows what the organization is connected to — API URL, WeSuite Customer ID, when it was last validated, and who set it up — plus how many users have connected out of the total. That count is the fastest way to spot a rollout that stalled partway.
Re-validate Connection re-checks the instance with current admin credentials. It is
what clears a connection_error, and it leaves user connections untouched.
Two different actions exist for turning the integration off, and they are not the same:
- Disable keeps the organization's configuration and every user connection intact, but stops the integration from doing anything. Reversible without re-entering anything.
- Delete removes the configuration and all user connections. Turning it back on means running organization setup again and having every user reconnect.
Prefer disable unless you specifically intend to unwind the whole thing.
Connection status reference
Organization status
| Status | Meaning |
|---|---|
not_configured | No admin has set the integration up yet |
pending_validation | The URL was entered and validation is running |
validation_failed | Selena could not validate the instance |
configured | Working — users can connect |
connection_error | Was working, now failing to reach WeSuite |
User status
| Status | Meaning | What to do |
|---|---|---|
not_available | The organization is not configured yet | Wait for admin setup |
not_connected | The user has not connected | Connect the account |
connected | Working | Nothing |
token_expired | The WeSuite session needs refreshing | Refresh, or reconnect |
auth_error | WeSuite rejected the credentials | Reconnect with current credentials |
Each status and what clears it is covered in Common Issues.
Programmatic access
The API exposes the WeSuite integration directly for organizations that want to drive it themselves. Endpoints are grouped as:
- Organization —
/orgs/{orgId}/integrations/wesuite/...for validate, setup, status, revalidate, disable, delete, and connected-user counts - User —
/users/{userId}/orgs/{orgId}/integrations/wesuite/...for authenticate, refresh, status, and disconnect - Working endpoints — estimate search, and the BOM resolve/accept flows
All of them require a Clerk bearer token with an active organization, the same as
the rest of the API. A 403 with a valid token almost always means the token carries no
active organization — it has to be selected before the token is minted, not passed as a
parameter.
Per-endpoint reference documentation — request and response schemas, status codes — is not published yet. The groups above describe the shape of the surface, not a contract. Ask in the Discord before building against it.
Troubleshooting
Every WeSuite failure worth documenting, with its cause and fix, is in one place:
The entries people reach for most:
- Validation fails during organization setup
- "Failed to authenticate with WeSuite" with a valid admin account
- Everyone in the organization is blocked at once
- One user gets
403 User not connected to WeSuite - A part exists in WeSuite but Selena cannot find it
- Data sync shows "Action required"
WeSuite integration FAQs
Overview
How Selena AI connects to the systems your team already works in — what an integration does, how it is scoped, and what is available today.
Common Issues
The problems teams actually hit when setting up and running an integration — grouped by integration, with the symptom, the cause, and the fix.