Introducing: Data Validation

Andrew Stewart
Streak
Published in
5 min readAug 8, 2016

Announcing our newest Enterprise Plan feature: Data Validation! Data Validation allows you to create Rules that control when specific fields on a box may be updated. If Data Validation sounds intimidating, think of Data Validation as ‘Required Fields’ with an additional option to create complex, custom rules.

The core function of Streak is to be the ‘Source of Truth’ for your Deals (Support tickets, Hiring candidates, Deal Flow, and more). If you’re scaling a team (or averse to mistakes), Data Validation will ensure that your Pipelines are complete and uniform. Clean, complete data powers granular Reporting, ensures accurate Saved Views, and makes the collaborative efforts of your team to build a Source of Truth more valuable. Streak can now prevent errors as they occur so that they can be fixed immediately. Already interested? Get started with a trial right now.

Creating your first Rule is easy:

A simple sentence like: “You cannot move a box to the ‘Demo’ or ‘Active’ Stage unless the “Lead Source” field is completed” is easily translated to Streak:

4 Use Cases for ‘Simple’ Rules

Sales: If the ‘Lead Source’ field is empty, the box cannot be moved to the Demo or Active Stage:
(see above)

Hiring: If the box is in stage “Hired!” then it can no longer be edited:

Support: If the “Paid User?” check box is marked, then the “Monthly Revenue” field must also be set

Dealflow: If the box is “Assigned To” a Partner (Andrew), make sure the “Next Meeting” field is completed:

After you create these rules, your teammates will have to abide by them. If they make any edits to a box that go against the rules, Streak will provide a friendly error and prevent incomplete data in the box.

Custom Messaging: For all of the above Rules, we can use the ‘Advanced’ option to customize the feedback from Streak:

“Reject” will prevent the action from taking place — “Warn” will allow users to violate the rules but give them a friendly warning that they are doing so.

Admins of the pipeline have to play by the same rules, but they are given an option to override the rule if they absolutely must.

‘Simple’ vs ‘Formula’ Rules
We’ve only scratched the surface of what we can can accomplish with Box Validation with Simple Rules. Using Formula Rules, we can create more complex, granular rules. Above, we were using the ‘Advanced’ option after the Rule had already been created. Instead, if we select ‘Advanced’ while creating a brand new rule, we have access to the ‘Formula Rule’ option:

Formula Rules, like the closely related feature Formula Columns, are powered by Javascript.

Making Your First Advanced ‘Formula’ Rule Support
Every box represents a support request from an account. If the box is in stage “Resolved” then it must be linked to at least 1 box in the Account Pipeline. For demonstration, we’re going to walk through sample logic step by step on the pipeline first. This sample Formula column will count the number of linked boxes:

… returning the following results in the Pipeline:

And we can translate the Number of Linked Boxes to answer the question “Would it be Valid?”:

Theoretically, we could stop here and create a simple rule that requires the “Would it be Valid?” column is set before the stage can be changed. However, this approach would mean we’ve added data (in this example 2 additional columns) to the Pipeline/Boxes that is mostly unnecessary.

If we instead use a Formula Rule, we can enforce that final “Would it be valid?” question without adding more columns to the Pipeline:

Once saved, the Rule would look like this:

When creating Formula Rules, they should evaluate to True (valid) or False (invalid) as shown above.

3 Additional Formula Examples

Enforce that the Monthly Recurring Revenue (MRR) is a multiple of 39 (in Streak’s case, our Corporate price is $39/user/month)

Formula text for easy copy/paste:

= $’MRR’ % 39 == 0

Make sure the ‘Zip Code’ field is 5 digits (related idea: enforce phone number fields having 9 digits)

Formula:

= String($’Zip Code’).length === 5

Verify ‘Deal Size’ field is greater than 0:

Formula:

= if ($’Deal Size’) {
if($’Deal Size’ < 0) {false;}
else {true;}
}
else { true;}

--

--