https://idp.example.com/metadata)providerId is assigned per connection at creation, so do not
construct these by hand before connecting. The SP metadata URL doubles as the
SP entity ID, and the metadata document published there is the authoritative
source for what your IdP needs.| Field | Value |
| SP metadata URL and SP entity ID (audience) | https://app.stackyapper.dev/api/better-auth/sso/saml2/sp/metadata?providerId=<providerId> |
| ACS / Reply URL | https://app.stackyapper.dev/api/better-auth/sso/saml2/sp/acs/<providerId> |
| Signing | Assertions must be signed; SHA-256 signature and digest algorithms. Authn requests are not signed |
| IdP-initiated sign-in | Not supported; use SP-initiated sign-in and keep IdP-initiated disabled |
app.stackyapper.dev even when the workspace
uses a custom access domain.| Symptom | Likely cause | Fix |
| Signature or certificate error | The metadata XML in Stackyapper no longer matches the IdP's signing certificate | Replace the metadata with the IdP's current metadata XML |
| The domain is rejected when connecting | The domain is not verified for this organization | Verify the domain first, then connect SAML |
| Sign-in succeeds at the IdP but the user cannot enter the workspace | The user is not an existing member — SAML does not create users | Invite the user or provision them through SCIM, then retry |
| The issuer is rejected | The IdP issuer field requires a URL | Enter the issuer exactly as the IdP publishes it, as an HTTPS URL |
| The metadata XML is rejected | The XML does not contain an EntityDescriptor element | Paste the full IdP metadata document, not a fragment or certificate alone |