Showing results for 
Show  only  | Search instead for 
Did you mean: 
This is a verified product documentation article. For case-based resolutions articles, please reference the Knowledge Base section of Invoca Community.

In Invoca, you can use Signals to tag and segment your phone calls according to the data and outcomes that are most useful to your business. This article will teach you how to create and manage rule-based Signals — Signals which Invoca evaluates based on conditions which you define ahead of time, including...

  • Details from your phone call itself, such as the duration of the phone call, the reason it ended, or a specific word or phrase spoken  by either your agent or the caller
  • Demographic data about your caller, such as their age, gender, or address type
  • Data collected elsewhere in your Invoca account, including Custom Data, AdWords data, and even other Signals
  • Platform data from your Invoca account, such as which Invoca campaign or promo number drove the phone call
  • Missed opportunity indicators — such as a call that was picked up by voicemail — to indicate a potential lost sale

You can even combine several of these conditions into one Signal, helping you pinpoint the calls and outcomes that are most valuable your business. Here's how to get started.

Creating a new rule-based Signal with Signal Builder

  1. Log in to your Invoca account. In the sidebar menu, click Signal, then select Manage Signals.
  2. Click the green + New Signal button, then select Rule-Based Signal.
  3. In the Name text box, name the type of call you'd like this Signal to indicate. For example, "Qualified caller". In the Description text box, list a short description of the conditions that you want this call to include.
  4. You can include a revenue amount for this Signal in the Revenue text box if you'd like to track revenue from your Signals in your Invoca reports.
  5. In the Conditions menu on the left-hand side of your window, select the first type of data you'd like your Signal to evaluate.
    Screen Shot 2022-02-06 at 11.15.47 PM.png
    For more information on the "Spoken Phrase" condition, see our article Build a Signal to capture a specific word or phrase with Keyword Spotting. For more information on the conditions in the Missed Opportunity section, see How to identify and track missed opportunities to recover lost sales.  
  6. The data type you chose will appear in the right side of your Signal Builder menu, with options to help you choose the exact condition you'd like to check from your phone calls.
  7. If you'd like to include more conditions in your Signal, follow steps 5 and 6 to continue adding new conditions.
  8. If you do include several conditions in one signal, check the and/or drop-down menu for each condition to specify whether you'd like your Signal to check for each condition independently or require your phone call to satisfy every condition to mark the whole Signal as true.
  9. If you only want this Signal to apply to calls from some of your Invoca campaigns, select which campaigns from the Campaigns drop-down menu.
  10. If you use Invoca for performance marketing, you can share this Signal with your syndicating networks by clicking the Syndication check box.
  11. When you're finished, click Save.

That's it! You've created a new rule-based Signal in your Invoca account. Now, whenever you receive a new phone call, Invoca will check that phone call for each condition you specified, and mark your call as either "true" or "false" for your Signal, depending on whether your conditions were met. To see these Signals in your Invoca reports, see Viewing Marketing Data and Signals in your Invoca reports.

When do my rule-based Signals process?

Most Signals you create in Signal Builder will process before your phone call takes place. The exception to this are Signals that include conditions for phrase spotting or call duration, which naturally require data from your phone call to evaluate. Those Signals will be processed shortly after your call ends instead.

Advanced: Write your own Signal expressions 

If you'd like a little more granularity in combining conditions to evaluate your Signals, you can also manually write your own Signal expressions using our Text editor view. Here's how:

  1. Follow steps 1-4 of the instructions above. Then, click the Text button above your Signal Builder conditions.
    Screen Shot 2022-02-06 at 11.17.21 PM.png
  2. In the text button below, enter an expression following the examples and operators below.
    You can switch back and forth between the guided Signal Builder and text-based manual expressions to make this part a whole lot easier.

  3. Add parentheses to your expression to group conditions together and employ more complicated and/or logic in evaluating your Signals.
  4. Follow steps 9-11 in the section above to select campaign and syndication options, then save your new Signal.

Use the following operators below to create manual expressions:

  • duration: Total length of call, can be in seconds or minutes
  • connect_duration: Length of call once forwarded out of Invoca IVR, can be in seconds or minutes
  • mobile*: True if phone type is mobile
  • landline*: True if phone type is landline
  • sms_sent*: True if a text message (SMS) was triggered during the Invoca IVR
  • during_hours*: True if phone call was placed during the business hours of the campaign (always true if campaign is set to 24/7
  • repeat*: True if this call is considered a repeat caller based on the criteria setup on the campaign (default is within the last 30 days); see previous_signal for a better way to determine if someone is calling back that has already cleared some criteria (such as asking for a quote, or making a purchase)
  • signal*: True if another Signal specified was met on this call (can be used to build up compound rules where one rule is based on the existence of another rule)
  • previous_signal: True if the Signal specified was met on a previous call to the campaign by a repeat caller (within the last 30 days) (Idea is that you will understand if they’ve had the a signal before)
  • voice_signal: True if the Voice Signal specified was met on a previous call to the campaign

*Real time expressions are evaluated at the time of the call. Signals containing real time expressions may be used effectively within call treatment conditions. Other expressions will evaluate to false in real time.

Expression Examples

duration > 2 minutes
duration < 30 seconds
duration > 1 minute AND mobile
during_hours AND sms_sent
signal = 'Over 18'
signal = 'SupportCall' AND duration > 5 minutes
previous_signal = 'Over 18'
voice_signal = 'Quote'

Custom Data Fields

custom_data["partner name"]  - true if the specified custom data field exists for the call. Note: you can check for exact match, contains, or simply if the field was present at all.


custom_data["utm_source"] = 'LinkedIn'
custom_data["utm_campaign"] contains 'Search'
custom_data["device_type"] = 'mobile' AND pool_param[os_type] = 'android'
To simply check if a custom data field exists:
custom_data["gclid"] present
or to check if a custom data field doesn't exist:
not (custom_data["gclid"] present)
This will only be true if the field value exists for this call and is not a blank string (i.e. whitespace only).

Ring Pool Parameters

pool_param[<param_name>]  - true if the specified RingPool parameter value exists for the call. Note: you can check for exact match, contains, or simply if the parameter value was present at all.


pool_param[utm_source] = 'LinkedIn'
pool_param[utm_campaign] contains 'Search'
pool_param[device_type] = 'mobile' AND pool_param[os_type] = 'android'
To simply check if a parameter value exists:
pool_param[gclid] present
This will only be true if the parameter value exists for this call and is not a blank string (i.e. whitespace only).

Promo Number Details
media_type - Promo Number Media Type
promo_number_description - Promo Number Description


media_type contains 'Search' OR media_type = 'Offline: TV'
promo_number_description = 'AdWords 2015 A1'
promo_number_description contains 'facebook'

Account & Campaign Details

advertiser_name - Advertiser/Merchant name
affiliate_name - Affiliate/Publisher name
advertiser_campaign_name - Campaign name (not including Advertiser name prefix)


advertiser_name = 'Zulu Servers'
affiliate_name contains 'search'
advertiser_campaign_name contains 'facebook' OR advertiser_campaign_name contains 'social media'

Enhanced Caller Profile (only available if feature is enabled)

Gender ("Male", "Female")
Age (accurate to within 5 year ranges)
Address_type  ("Business", "Residential")
Household Income (example: "25k")
Marital Status ("Married", "Single")
Has Children ("No", "Yes")
Home Owner Status ("Own", "Rent")
Home Market Value (example: "80k")
Length of Residence (Number of years)
Education ("Completed College", "Completed High School", "Completed Graduate School", "Attended College")
High Net Worth ("No", Yes")


gender = "male" AND age > 20 AND age < 50
gender = "female" AND address_type = "residential"
address_type = "business"

Expression Operators

Use OR if you want either/any condition to be true
Use AND if you want both/all conditions to be true
Use AND NOT in front a condition to invert the logic
Use parenthesis when you have multiple conditions


duration >= 5 minutes AND (pool_param[gclid] present OR pool_param[kid] present)
This Signal evaluates to "true" if the call is 5 minutes or more, and a gclid OR a kid parameter value exists.

Comparing Numbers

> greater than
< less than
>= greater than or equal to
<= less than or equal to
= equal

Comparing strings (e.g. campaign names, ring pool param values, etc)

= equal, case insensitive
contains partial match, case insensitive
present exists and is non blank


Need more help?

Don't see what you are looking for? You can ask the Community or contact support.