Jotform
MARKETING · MARKETING
Forms, their questions, submissions, uploaded files, and reports in the account they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
jotform_delete_form_by_idWRITEDelete a form via DELETE /form/{id}. Delete a form. Jotform moves a deleted form to the account's trash rather than purging it, so it can be restored from the Jotform dashboard for as long as the plan retains it -- but its submissions go with it and this integration offers no restore. Deleting a form the account still collects responses on stops that collection.
jotform_delete_form_by_id_question_by_qidWRITEDelete a question via DELETE /form/{id}/question/{qid}. Remove one question from a form. Answers already submitted to that question stay in the form's submission records but the question stops being asked. Irreversible from here.
jotform_delete_form_by_id_webhooks_by_whidWRITEDelete a webhook via DELETE /form/{id}/webhooks/{whid}. Remove one webhook from a form, named by the webhook id jotform_get_form_by_id_webhooks returns. The form stops forwarding submissions to that URL from the next submission onward; anything already delivered is gone and cannot be recalled. This is the compensating control for jotform_post_form_by_id_webhooks.
jotform_delete_label_by_idWRITEDelete a label via DELETE /label/{id}. Delete a label. The forms and reports filed under it are NOT deleted -- they lose the label and stay in the account. Irreversible from here; recreate the label and re-add its resources to undo it.
jotform_delete_report_by_idWRITEDelete a report via DELETE /report/{id}. Delete a report and the URL it is served at, so a link already shared stops working. The form and its submissions are untouched. This is the compensating control for report creation.
jotform_delete_submission_by_idWRITEDelete a submission via DELETE /submission/{id}. Delete one submission and the answers it carries. Jotform moves it to the form's trash rather than purging it, so it can be restored from the Jotform dashboard; this integration offers no restore. Files uploaded with the submission go with it.
jotform_get_form_by_idREADGet a form via GET /form/{id}. Retrieve one form's details by id: title, status, created and updated times, submission count, last submission, the form's public URL and its owner. Changes nothing in the account.
jotform_get_form_by_id_filesREADList a form's uploaded files via GET /form/{id}/files. List every file respondents have uploaded through this form, each with the submission it came from, the question that collected it and its download URL. Changes nothing in the account.
jotform_get_form_by_id_propertiesREADGet a form's properties via GET /form/{id}/properties. Retrieve every property of a form: title, height, fonts, colours, submission limits, thank-you behaviour, redirect URL and the rest of Jotform's form-property vocabulary. Changes nothing in the account.
jotform_get_form_by_id_properties_by_keyREADGet one form property via GET /form/{id}/properties/{key}. Retrieve a single named property of a form -- `key` is a Jotform property name such as fontsize, thankurl, activeRedirect, limitSubmissions or hideMailEmptyFields, not a credential. Changes nothing in the account.
jotform_get_form_by_id_question_by_qidREADGet one question via GET /form/{id}/question/{qid}. Retrieve a single question on a form by its question number, with its control type, label, slug, order and control-specific settings. Changes nothing in the account.
jotform_get_form_by_id_questionsREADList a form's questions via GET /form/{id}/questions. Retrieve every question on a form, keyed by question number, each with its control type, label, slug, order and control-specific settings. These question numbers are what a submission's answers are keyed by, so this is the call to make before writing one. Changes nothing in the account.
jotform_get_form_by_id_reportsREADList a form's reports via GET /form/{id}/reports. List the reports built from one form's submissions, each with its id, title, type and URL. Changes nothing in the account.
jotform_get_form_by_id_submissionsREADList a form's submissions via GET /form/{id}/submissions. List the submissions made to one form, each with its id, submission time, respondent IP, read and flagged markers and every answer keyed by question number. `limit` and `offset` page through them, `orderby` sorts by id, username, title, status, created_at, updated_at, new, count or slug, and `filter` is a JSON string Jotform evaluates server-side. Changes nothing in the account.
jotform_get_form_by_id_webhooksREADList a form's webhooks via GET /form/{id}/webhooks. List the webhook URLs a form posts its submissions to, keyed by webhook id. Use it to audit where a form's submissions are already being forwarded before adding another destination, and to find the id the webhook delete needs. Changes nothing in the account.
jotform_get_label_by_idREADGet a label via GET /label/{id}. Retrieve one label by id: its name, colour, order, owner and parent. Changes nothing in the account.
jotform_get_label_by_id_resourcesREADList a label's forms and reports via GET /label/{id}/resources. List the forms and reports filed under one label, each with its id and type. Changes nothing in the account.
jotform_get_report_by_idREADGet a report via GET /report/{id}. Retrieve one report's details by id: its title, type, the form it draws from, its settings and its URL. Changes nothing in the account.
jotform_get_submission_by_idREADGet a submission via GET /submission/{id}. Retrieve one submission by its own id, with its form, submission time, respondent IP, read and flagged markers and every answer keyed by question number. Changes nothing in the account.
jotform_get_system_plan_by_plannameREADGet a plan's limits via GET /system/plan/{planName}. Retrieve the limits and prices of one Jotform plan by name -- FREE, BRONZE, SILVER, GOLD or PLATINUM -- including its submission, upload, form-count and daily API-call ceilings. Read the account's own plan name from jotform_get_user (`account_type`) and its consumption from jotform_get_user_usage. The only operation on this API that needs no credential. Changes nothing in the account.
jotform_get_userREADGet account details via GET /user. Retrieve this Jotform account's own details: username, name, email, website, time zone, account type, status, region and whether it is verified. The reply also carries `limit-left`, how many of today's API calls remain on this key. This is the endpoint the connect-time probe uses. Changes nothing in the account.
jotform_get_user_formsREADList forms via GET /user/forms. List the forms this account owns, with each form's id, title, status, creation and update times, submission count and URL. `limit` and `offset` page through them, `orderby` sorts by id, username, title, status, created_at, updated_at, new, count or slug, and `filter` is a JSON string Jotform evaluates server-side. This is where form ids come from. Changes nothing in the account.
jotform_get_user_historyREADGet account activity history via GET /user/history. Retrieve this account's activity log: form creations and updates, submissions, logins, API key creation and deletions. `action` narrows it to one of all, userCreation, userLogin, formCreation, formUpdate, formDelete or formPurge, `date` to one of lastWeek, lastMonth, last3Months, last6Months or lastYear, `startDate` and `endDate` to a custom window, and `sortBy` orders it ASC or DESC. Changes nothing in the account.
jotform_get_user_labelsREADList labels via GET /user/labels. List this account's labels -- Jotform's replacement for the retired folder feature -- each with its id, name, colour and parent. `addResources` asks Jotform to include each label's forms and reports inline; the ledger marks it required and it is not, measured 2026-09-24. Changes nothing in the account.
jotform_get_user_reportsREADList all reports via GET /user/reports. List every report this account has created across all of its forms, with each report's id, title, type and the form it draws from. Changes nothing in the account.
jotform_get_user_settingsREADGet account settings via GET /user/settings. Retrieve the account's settings: name, email, company, website, time zone, industry, security question and account status. Changes nothing in the account.
jotform_get_user_submissionsREADList all submissions via GET /user/submissions. List submissions across every form this account owns, newest first by default. `limit` and `offset` page through them, `orderby` sorts by one of id, form_id, IP, created_at, status, new, flag or updated_at, and `filter` is a JSON string Jotform evaluates server-side (for example {"created_at:gt":"2026-01-01"}). Changes nothing in the account.
jotform_get_user_subusersREADList sub-users via GET /user/subusers. List the sub-user accounts that share this account's forms, and what each may reach. Requires a plan that includes sub-users: measured 2026-09-24 a Starter (FREE) account answers 401 "User is not Allowed" here, which is the plan speaking and not a bad key -- the plan's own `subusers` limit is 1, the account holder alone. Changes nothing in the account.
jotform_get_user_usageREADGet monthly usage via GET /user/usage. Retrieve this month's usage counters for the account: submissions, SSL submissions, mobile submissions, payments, form views, form count, upload bytes, signed documents and AI conversations. Compare them against jotform_get_system_plan_by_planname for the plan's ceilings. Changes nothing in the account.
jotform_post_formWRITECreate a form (alternate path) via POST /form. Create a new Jotform form -- the same operation as jotform_post_user_forms, which Jotform publishes under a second path. `questions` is keyed by question number and `properties.title` is required. The `emails` notification block is not available through this integration. Measured 2026-09-24, this endpoint answered 401 on a Starter account with 0 of 5 forms used, so the account's own plan or state may refuse it.
jotform_post_form_by_id_cloneWRITEClone a form via POST /form/{id}/clone. Copy a form, with its questions and properties, into a new form owned by the same account. Returns the new form's id. Submissions are NOT copied. Takes no body.
jotform_post_form_by_id_propertiesWRITEUpdate a form's properties via POST /form/{id}/properties. Add or change form properties. `activeRedirect` decides what a respondent sees after submitting -- `default` for Jotform's thank-you message, `thanktext` for custom text or `thankurl` to send them to another page -- and `formWidth` and `labelWidth` resize the form. A partial update: properties the body does not name are left as they are.
jotform_post_form_by_id_question_by_qidWRITEUpdate a question via POST /form/{id}/question/{qid}. Change one question's properties -- its label, position or data slug -- leaving the rest of the form alone. A partial update: only the properties named in `question` are written.
jotform_post_form_by_id_questionsWRITEAdd a question to a form via POST /form/{id}/questions. Append a question to a form. `question.type` is a Jotform control name (control_textbox, control_dropdown, control_fileupload and the rest), and `text`, `order` and `name` set its label, position and data slug. Returns the created question with its new question number.
jotform_post_form_by_id_reportsWRITECreate a report via POST /form/{id}/reports. Build a report from a form's submissions: `title` names it and `list_type` picks the kind -- csv, excel, grid, table or rss. `fields` selects the columns by question id, plus `ip` for the respondent's address and `dt` for the submission date. THE REPORT GETS ITS OWN URL, which is how Jotform shares one, so treat the reply's URL as publishable rather than private; jotform_delete_report_by_id removes it again.
jotform_post_form_by_id_submissionsWRITEAdd a submission to a form via POST /form/{id}/submissions. Record a submission against a form as if a respondent had filled it in. Answers go under `submission`, keyed by the question numbers jotform_get_form_by_id_questions returns; a question with sub-fields takes an object of them. Counts against the account's monthly submission allowance, and any notification the form is configured to send will fire.
jotform_post_form_by_id_webhooksWRITEAdd a webhook to a form via POST /form/{id}/webhooks. Register a URL that Jotform POSTs every future submission of this form to. READ THE PAYLOAD BEFORE CHOOSING THE DESTINATION: what is sent is whatever the form collects, from the people who fill it in -- names, email addresses, uploaded files, and on a HIPAA-plan account health information -- and those respondents are third parties who cannot see where their answers were forwarded. The rule fires on every submission from now on, with no further call, so point it only at a host the account owner controls. `jotform_get_form_by_id_webhooks` lists what a form already has and `jotform_delete_form_by_id_webhooks_by_whid` removes one.
jotform_post_labelWRITECreate a label via POST /label. Create a label for organising forms and reports. `name` is required; `color` is a hex triplet and `parent` nests this label under another. Jotform picks a colour when none is given.
jotform_post_submission_by_idWRITEUpdate a submission via POST /submission/{id}. Change a submission: rewrite answers under `submission` keyed by question number, set `submission.flag` to '1' to flag it, or set `submission.new` to '0' to mark it read. A partial update -- fields the body does not name are left alone.
jotform_post_user_formsWRITECreate a form via POST /user/forms. Create a new Jotform form from its questions and properties. `questions` is keyed by question number and each entry names a Jotform control type; `properties.title` is required. The `emails` notification block Jotform also accepts here is NOT available through this integration: it names an agent-chosen recipient and fires on every future submission. Set up notifications in the Jotform form builder. Measured 2026-09-24, this endpoint answered 401 on a Starter account with 0 of 5 forms used, so the account's own plan or state may refuse it.
jotform_post_user_settingsWRITEUpdate account settings via POST /user/settings. Change this Jotform account's profile: display name, company, website, time zone and industry. Three fields Jotform also accepts here are NOT available through this integration -- `email`, `securityQuestion` and `securityAnswer` -- because together they are the account's password-recovery path, and moving it would move control of the account and of every future API key minted for it. Change those in Jotform's own account settings.
jotform_put_formWRITECreate forms from a form document (alternate path) via PUT /form. Create forms from a whole `formContent` document -- the same operation as jotform_put_user_forms under Jotform's second path. The `formContent.emails` notification block is not available through this integration. Measured 2026-09-24, this endpoint answered 401 on a Starter account with 0 of 5 forms used.
jotform_put_form_by_id_propertiesWRITEReplace a form's properties via PUT /form/{id}/properties. Write a form's properties as a whole, under the `formProperties` key. This is the bulk counterpart of the partial property update; read the current set with jotform_get_form_by_id_properties first, because anything the body omits is not preserved.
jotform_put_form_by_id_questionsWRITEReplace a form's questions via PUT /form/{id}/questions. Write a form's questions as a whole, keyed by question number, under the `questions` key. This is the bulk counterpart of adding questions one at a time; read the current set with jotform_get_form_by_id_questions first, because anything the body omits is not preserved.
jotform_put_form_by_id_submissionsWRITEWrite submissions in bulk via PUT /form/{id}/submissions. Write submission data for a form as a whole, under the `submission` key, keyed by question number. The bulk counterpart of adding submissions one at a time; the same allowance and the same notifications apply.
jotform_put_label_by_idWRITEUpdate a label via PUT /label/{id}. Rename a label, recolour it or move it under a different parent. The body is the flat set of fields to change -- the ledger records a `property` wrapper that Jotform answers 400 "No parameters." to.
jotform_put_label_by_id_add_resourcesWRITEAdd forms or reports to a label via PUT /label/{id}/add-resources. File forms and reports under a label, each named by its id and its type (FORM or REPORT). Adding a resource that is already there is not an error. A bare array is refused -- the resources go under the `resources` key.
jotform_put_label_by_id_remove_resourcesWRITERemove forms or reports from a label via PUT /label/{id}/remove-resources. Take forms and reports out of a label, each named by its id and its type (FORM or REPORT). Removes only the filing: the form or report itself is untouched.
jotform_put_user_formsWRITECreate forms from a form document via PUT /user/forms. Create one or more forms from a whole `formContent` document -- questions, properties and layout in a single object, which is how Jotform's own exports are shaped. The `formContent.emails` notification block is not available through this integration. Measured 2026-09-24, this endpoint answered 401 on a Starter account with 0 of 5 forms used.
Often connected alongside
Put Jotform behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.