Perfect Tense (grammar checker)


This page's Bubble editor will show you how you can set up Perfect Tense to target all valid inputs on the page. Note that our Test API keys are no longer valid (they only last a few days), so Perfect Tense no longer works on this test page.


In order to use the Perfect Tense API, you need to:
  1. 1.
    Get an API Key at
  2. 2.
    Add the AirDev Perfect Tense plugin to your application
  3. 3.
    Add the API Key to the Plugin's Client Key field (in the plugin tab)
  4. 4.
    Add a "PT Grammar Check" element to the page you'd like it to work on
  5. 5.
    Add an Instant Text element to the page and point it at the input
This plugin only works on HTML "textarea" elements. In Bubble, this includes the Multiline Input and the Bubble Rich Text plugin, as well as a number of other plugins. Elements such as normal inputs (one-line inputs) and search boxes are not compatible with this plugin.
When you update an input's text with Perfect Tense, it will visually change on the screen, but Bubble won't update the input's value. This is why you should use an Instant Text element, which will update when Perfect Tense updates the element's value.

Optional: select specific inputs

By default, the plugin will check the grammar on all inputs on the page.
If you'd like to check the grammar and spelling on specific inputs, you can do so on up to 5 inputs for each page.
Assign an HTML element ID to each of the elements that you'd like to check.
Then, enter that input in the PTGrammarCheck element's Input 1 field.
The other inputs appear to be invalid, but they are actually optional.
If you want to select other elements, you can add multiple element IDs to the plugin.
The plugin is not intended to select more than 5 elements. Contact us at [email protected] if you need it for more than 5 inputs.

Optional: Dynamic data on specific inputs

When using specific inputs, you can use dynamic data on these fields. However, make sure that whatever data you're searching for is ready to be displayed when the plugin is first visible on the page.
Below are some examples of dynamic data that work:
Dynamic data to specify HTML IDs
For the 3rd input above, pt-id is a state that has a default value on pageload.
Examples of values that would not work in the above case (plugin is visible on pageload) include:
  • Inputs that a user must fill out
  • Element states that will change when the user takes some action
  • (Many other cases, whenever the specified element ID is not available on page load)