Skip to main content

About Typeform

Typeform is a conversational form and survey platform. The Serval Typeform integration lets your workflows manage forms and quizzes, pull and clean up form responses, organize workspaces and themes, upload images, and register webhooks that notify other systems about new submissions. Serval only ever talks to Typeform’s official API hosts (api.typeform.com for United States accounts, api.typeform.eu for European Union accounts, plus api.eu.typeform.com for United States accounts whose responses live on Typeform’s older EU responses data center). Authentication: OAuth 2.0 with your own Typeform app (“bring your own app”). Your team registers an app in Typeform’s Developer Apps panel and supplies its Client ID and Client Secret in Serval’s connect form - Serval does not operate a shared Typeform app. Once connected, Serval keeps access fresh automatically, so a healthy connection never needs periodic re-authorization. Data sync: On-demand only. Serval reads from and writes to Typeform exclusively when a workflow step runs. There is no background sync, no entity ingestion, and no prebuilt workflows are installed with this integration.

What the Typeform integration enables

Anything defined in the Typeform API can be accessed through Serval.

Get your credentials

You need your own Typeform OAuth app - a Client ID and Client Secret - registered in Typeform’s Developer Apps panel for the region your account lives in: admin.typeform.com for United States accounts or admin.typeform.eu for European Union accounts. Typeform’s registration form requires Serval’s redirect URI up front, so the setup interleaves with the Serval side: start in Serval, register in Typeform, then finish back in Serval. See Typeform’s Applications guide for background.
1

Start the connection in Serval first

Open the Connect Typeform form in Serval and check the Region: United States if you sign in at admin.typeform.com, European Union if you sign in at admin.typeform.eu. It is preselected from your Serval region, so change it if your Typeform account lives in the other data center. The form displays the environment-specific Redirect URI with a copy button - copy it now, and leave this form open while you work in Typeform.
2

Open Typeform's Developer Apps panel

Follow the Typeform Developer Apps panel link in the form (it points at the admin site for the region you chose), or log in at admin.typeform.com / admin.typeform.eu and open the Developer Apps panel: click the icon drop-down next to your organization name in the upper-left corner, then Developer Apps under the Organization section. Click Register a new app.
3

Register the app

Fill in App name (e.g. “Serval Integration”), App website (cosmetic - it appears on the consent screen), Redirect URI(s) (paste the exact URI you copied from Serval), and Developer email. Click Register app.
4

Copy the Client Secret immediately

Typeform shows the Client Secret only once, at registration time. Copy it now. The Client ID stays visible in the panel afterward.
5

Approve all 14 scopes

On the new app’s OAuth 2.0 scopes settings, approve every scope Serval requests: accounts:read, forms:read, forms:write, images:read, images:write, themes:read, themes:write, workspaces:read, workspaces:write, responses:read, responses:write, webhooks:read, webhooks:write, and offline. A missing scope makes the authorization step fail.
The Client Secret is shown a single time. If you navigate away without copying it, you must regenerate it - which immediately invalidates the old value and breaks any Serval connection still using it.
Always copy the Redirect URI from the Serval form rather than typing it by hand. It must match exactly, and it differs per environment.

Connect in Serval

1

Open the Connect Typeform form

In Serval, add the Typeform integration to open the connect form.
2

Choose your region

Region is preselected from your Serval region (European Union on app.eu1.serval.com, United States otherwise). Set it to United States or European Union to match the admin site you sign in to. Serval sends you to that region’s consent screen and only ever talks to that region’s API for the life of the connection. The choice is fixed once the connection exists: when you reconnect, the region is shown read-only. To use Typeform’s other data center, add a new Typeform connection. European Union connections appear in your connection list with an (EU) suffix.
3

Copy the Redirect URI if you have not already

The read-only Redirect URI field shows the value to register in Typeform, with a copy button (its icon switches to a check mark once copied). Its helper text reads “Add this as a Redirect URI in your Typeform app settings.”
4

Enter the Client ID

Fill in Client ID (required) - placeholder “Enter your Typeform Client ID”. Stray whitespace is trimmed automatically.
5

Enter the Client Secret

Fill in Client Secret (required) - a masked, password-style field with placeholder “Enter your Typeform Client Secret”. Stray whitespace is trimmed automatically.
6

Connect and approve

Click Connect to Typeform. The button stays disabled until both fields are filled in; if a blank value slips through anyway, the form shows “Please fill in all required fields” and the server rejects it with “clientId is required” or “clientSecret is required”. Serval sends you to Typeform’s consent screen - approve it to finish. The connection is named after your Typeform account.
Complete Typeform’s consent screen within 10 minutes of clicking Connect to Typeform. The credentials you entered are held only briefly, and taking longer shows “Invalid or expired OAuth state” or “OAuth session expired, please try again” - just restart from the connect form.
There is no separate edit-credentials form for this integration. Running the connect flow again with the same Typeform account refreshes its access and scopes in place and keeps your workflows wired up. A regenerated Client Secret is not yet carried over by reconnecting: to rotate the secret today, remove the connection and connect again with the new secret.

Verifying the connection

The Typeform integration includes three named health checks:
  • Test Typeform Connection - verifies Serval can authenticate by looking up the connected account, and reports it by name, email, or user ID (whichever is available first; “unknown user” if none are). On success: “Successfully connected to Typeform as [name]”. On failure: “Unable to connect to Typeform. Verify your OAuth credentials are valid, the app has the accounts:read scope approved, and the token has not been revoked.”
  • List Typeform Forms - verifies form read access by listing a small sample of forms. On success: “Found [number] form(s): [up to 3 sample titles].” If the account has no forms yet: “API access verified but this account has no forms yet. Create a form in Typeform to start automating responses.” On failure: “Unable to list forms. Verify your Typeform app has the forms:read scope approved on the OAuth scopes settings.”
  • List Typeform Workspaces - verifies workspace read access by listing a small sample of workspaces. On success: “Found [number] workspace(s): [up to 3 sample names].” If the account has no workspaces yet: “API access verified but this account has no workspaces yet.” On failure: “Unable to list workspaces. Verify your Typeform app has the workspaces:read scope approved on the OAuth scopes settings.”
Behind the scenes, Serval also re-verifies authentication with the same account lookup used by the first check. A failure there means the token was revoked, the app was deleted, or its scopes changed on the Typeform side.
If all three checks are green but workflows later start failing, the cause is almost always on the Typeform side: the app was revoked or deleted, or its Client Secret was regenerated after you connected. Re-run the connect flow with fresh credentials to repair the connection.

Gotchas and troubleshooting

Serval only sends a connection’s credentials to the API hosts of the region it was created in: api.typeform.com (and api.eu.typeform.com, Typeform’s older EU responses data center) for United States connections, api.typeform.eu for European Union connections. A request to the other region’s host fails before any credential is attached, with a message naming the host and the connection’s region. Point the workflow at a Typeform connection created for that data center, or add one.
Serval requests the same fixed set of 14 scopes on every connection: accounts:read, forms:read, forms:write, images:read, images:write, themes:read, themes:write, workspaces:read, workspaces:write, responses:read, responses:write, webhooks:read, webhooks:write, and offline. If any one of them is not enabled on your app’s OAuth scopes settings, Typeform rejects the authorization with invalid_scope. Enable the missing scope(s) in the Developer Apps panel and connect again.
The Client ID and Client Secret you enter are held for only 10 minutes between clicking Connect to Typeform and returning from Typeform’s consent screen. If the approval takes longer, the attempt expires. Restart the connection from the Serval connect form - your Typeform app itself is unaffected.
Typeform access tokens expire after about one week by default. The offline scope - which Serval always requests - is what lets Serval refresh access automatically with a long-lived refresh token that lasts until revoked. If offline was not approved on your app when you connected, the connection breaks after roughly a week. Approve offline in the Developer Apps panel and reconnect.
Serval stores your app’s Client ID and Client Secret with the connection and uses them to refresh access. If the secret is regenerated in Typeform, refreshes fail as soon as the current access lapses. There is no separate update-credentials form, and reconnecting does not yet carry a new secret over: remove the connection and connect again with the fresh Client Secret.
Typeform displays the Client Secret only once, at app registration, and Serval never reveals it back to you. If you did not copy it, regenerate it in the Developer Apps panel - note this immediately invalidates the old value and breaks any Serval connection still using it - then re-run the connect flow with the new secret.
Typeform’s Register app button stays disabled until Redirect URI(s) is filled in. That is why the setup starts in Serval: open the connect form first to reveal and copy the environment-specific Redirect URI, register the Typeform app with it in a second tab, then return to the still-open Serval form with your credentials. Always copy the URI from the form - it must match exactly.
Connections are keyed on the Typeform account you authorize and named after it, with an (EU) suffix for European Union connections so a team holding both can tell them apart. Reconnecting with the same account - for example to approve more scopes - updates the existing connection in place and preserves the workflows wired to it (a regenerated Client Secret is the exception, see above). Reconnecting with a different Typeform account creates a separate connection instead.
Workflows can list the account’s image library and upload new images (from a file or a public URL), but there is no way to retrieve or delete an individual image through the integration. Remove images in Typeform directly if needed.

Need help? Contact support@serval.com for assistance with your Typeform integration.