About Ironclad
Ironclad is a contract lifecycle management (CLM) platform that covers contract creation, negotiation, approvals, signatures, and records. Serval connects to your Ironclad account with an OAuth 2.0 client-credentials app and the email of an Ironclad admin user, then calls Ironclad’s public REST API on your behalf. Every request Serval makes is performed as a specific Ironclad user - either the person a workflow run is acting for, or your configured admin as the fallback. Note that in Ironclad, a “workflow” is a contract workflow (approvals, signatures) - not a Serval workflow. Authentication: OAuth 2.0 client credentials (Client ID + Client Secret from an Ironclad OAuth app), plus an Admin Email used to impersonate a user on each request. Data sync: On-demand only - there is no background sync or scheduled ingestion. Serval reads from and writes to Ironclad at the moment a Serval workflow runs.What the Ironclad integration enables
Get your credentials
Serval authenticates with an OAuth 2.0 client application that you create inside Ironclad, using the Client Credentials grant. You’ll also need the email address of an Ironclad admin user (or an admin-privileged service account) that Serval will make requests on behalf of. Ironclad’s official guide is here: Ironclad client credentials grant.Open Company Settings
Go to the API tab
Create the app
Save the Client ID and Client Secret
Set the grant type
Add scopes
public.workflows.read and public.records.read), then click Save Changes.Pick an admin user
Connect in Serval
All five fields are required - the form flags any required field left blank with “This field is required” and won’t save until it’s filled. If an incomplete configuration reaches Serval’s backend anyway, it is rejected with a message that begins “Invalid Ironclad configuration” (for example, “client ID is required”, “client secret is required”, or “scopes are required”).Enter the API Base URL
https:// or any path: na1.ironcladapp.com (US Production), eu1.ironcladapp.com (EU Production), demo.ironcladapp.com (Demo), or preview.ironcladapp.com (Preview). Anything that isn’t an Ironclad domain is rejected with “Must be a valid Ironclad API base URL (e.g., na1.ironcladapp.com, eu1.ironcladapp.com)”. This domain is also used for OAuth authentication, so it must match the environment where you created the app.Enter the Client ID
Enter the Client Secret
Enter the Admin Email
admin@company.com). API requests are made on behalf of this user when a workflow run doesn’t specify someone else. Invalid input shows “Must be a valid email address”.Enter the Scopes
public.workflows.read, public.workflows.write, public.records.read. At least one scope is required, and the list must match the scopes granted on your Ironclad OAuth app.Verifying the connection
After saving, Serval runs one health check: Test Ironclad Connection - verifies the integration is properly configured and can authenticate. Serval performs the full OAuth client-credentials token exchange with your scopes, then requests a single contract workflow from Ironclad as your configured Admin Email.- On success: “Successfully authenticated with Ironclad”
- On failure: “Unable to connect to Ironclad. Please verify your Client ID, Client Secret, and Admin Email are valid.”
Gotchas and troubleshooting
'Workflows' means contract workflows, not Serval workflows
'Workflows' means contract workflows, not Serval workflows
Scopes must match the OAuth app exactly
Scopes must match the OAuth app exactly
Admin Email is required, and every request impersonates a user
Admin Email is required, and every request impersonates a user
API Base URL is strictly validated and drives authentication
API Base URL is strictly validated and drives authentication
na1.ironcladapp.com, eu1.ironcladapp.com, demo.ironcladapp.com, preview.ironcladapp.com, or bare ironcladapp.com are accepted - without https:// or a trailing path. The same domain is used to reach Ironclad’s OAuth token endpoint and is enforced by Serval’s outbound request allow-list, so an environment mismatch breaks both authentication and API calls.Ironclad environments are isolated
Ironclad environments are isolated
Don't include the API prefix in request paths
Don't include the API prefix in request paths
/public/api/v1 prefix to every request made through the generic API request action, so enter request paths without it. Including the prefix yourself produces a doubled path and a not-found error from Ironclad. A few operations (such as a workflow’s signature-step status) are not part of the bundled API specification; they’re still reachable through the generic action, just without type checking.Client Secret is write-only after saving
Client Secret is write-only after saving
Need help? Contact support@serval.com for assistance with your Ironclad integration.

