The Hopper and Relays

Hopper Relay Logic

The hopper can be compared to a paintball hopper. A bunch of leads are all put into a bucket together, but the leads can only be dialed in the order they are added as the Campaign dials through the leads in the hopper.

VICIdial No Hopper Relays

  • Relays are what TLD uses to SEND data to a destination via HTTP POST. Some platforms call this a “webhook.”

  • The Vicidial No Hopper relay is a way of passing information from TLD to TLDialer specifically.

  • Inbound transfer Vendor Sources vs Outbound dialing Vendor Sources

    • Outbound Dialing Vendor Sources - Lead data is posted into the Vendor Source. There is no need to connect a DID for Outbound campaigns since the leads will auto dial, connecting the User to a customer when a connection is made.

    • Inbound Transfer Vendor Sources - have phone # attached, someone else is doing the cold calling and transfering call when they identify an interested party. These calls are typically billed to the client by the vendor themselves.

  • The Inbound Group (or State Route) that the Vendor Source is associated with handles the routing of calls. In order to ensure the calls are routed correctly the Inbound Group(s) will need to be allowed in a Campaign and users need to be added as members to the Inbound Group.

    • It is possible to change the assigned Campaign for a Vendor Source’s TLDialer “List.” This helps the appropriate Campaign dial the desired List(s). See “Redirect” for reference

  • When Live Agents reports “0 Dialable Leads” it means that the Campaign cannot add further leads into the Hopper (which is used by the Campaign to know what to dial next). The Campaign’s criteria for adding leads to the Hopper is multitudinous and requires an in-depth understanding of the Dialer.

  • To be as brief as possible: leads must have their CSLR flag set to No, their status must be a dial status, the lead’s GMT offset and local time must be acceptable per the Campaign Call Time, the lead must not be in the DNC or in a disqualifying FPG and/or any other exclusionary criteria (including State, Zipcode, etc.) configured for use by the Campaign.

  • When the Hopper is empty it means that either Dialable Leads is 0 or that the Campaign was able to call all of the leads in the Hopper since the last time the Hopper was refreshed. This will resolve itself within the next refresh interval OR changes are needed to add MORE leads than the Campaign can consume from the Hopper within the refresh interval.

  • If a Vendor Source shows that its list is empty (0 total leads, for example) this may be the result of the Vendor Source not having a “Relay” assigned to it which results in TLD not sending leads it receives to the Dialer List. Be sure at least the “No Hopper” relay is always associated with a vendor unless it is deliberately configured that way.

  • When a Lead is posted to the Vendor Source the information is located in TLD only, meaning there is no Dialer Lead. A Relay sends the lead data to the dialer server creating the dialer lead so now the lead exists on the dialer and is dialable (Campaign Criteria permitting). The “No Hopper” Relay creates a dialer lead and does nothing else.


Hopper priority 50

  • The original intent of the Priority 50 was for the leads sent though this relay to jump the existing leads in the hopper because of the presence of the Priority value.

    • It was discovered that the Hopper itself is ephemeral and is purged nightly when the server reboots. Because of this, Hopper Priority 50 is not used much these days and its effect would only last a day at most.


What can happen if there is no Hopper Relay?

  • If there is no Hopper Relay for Inbound Transfer Calls from a Vendor Source, then a call or lead post that attempts to create a lead in TLD (via Ingroup Add Lead URL for example) will not create or attach a corresponding Dialer Lead. This can cause problems long term if inbound calls are NOT handled by agents often. The lack of a TLD Lead ID (Vendor Lead Code value) causes the Dialer Lead to become “orphaned” and that Lead or its information becomes difficult to access for the client as it does appear in a TLD Quick Search.


What else can Relays do?

  • Another common use for a Relay is to update sales information on a 3rd party platform.

    • In order to create the relay the 3rd party API is needed

      • TLDialer relays are only for internal usage.

    • A Dialer Relay is necessary to send any data to an external platform.

  • In order to determine if the transfer was a success or failure the Relay would need to be updated with the response from the 3rd party. By default the relay will show a Failure until success criteria is provided.

  • URL for API, rate max, post method, response needed to determine success or failure. Return type, json, payload form, Outbound ANI is an Ops only task. Headers complicated http extra data for the request. 

  • Extra Fields are for static values that are not related to the Lead being sent. It is suggested to remove any and all mapping values from the relay to be sure only what is explicitly sent is received.

  • TLD is flexible enough to change the outgoing value map for destinations using fields different from TLD defaults; many 3rd parties will not make changes to match our mapping.

  • Relays can be sent manually (from Explore Sections), from the lead (if the relay is set to Buyer), or from a status/disposition (lead or policy) via Trigger.

There are other automated dispositions regarding inbound calls such as DROP AFTHRS TIMEOT, and some obviously callable dispositions like B AB NEW N A but your account may have more dispositions with possibly unknown workflows.

  • A Vicidial Campaign has Dial Statuses like NEW A NA etc.

  • These statuses can be referenced here: https://{subdomain}.tldcrm.com/tldialer/dispositions

  • Leads are added into the hopper when the following criteria are met:

    • Lead's status is a dial status (above).

    • Lead's column called_since_last_reset = N (meaning they are reset)

    • Lead's GMT Offset (timezone) is applicable or allowed by the campaign's configured Local Call Time 9am-9pm.

The above criteria are evaluated every minute as leads are added to the end/bottom of the hopper (appended; first in first out) when the amount of leads in the hopper falls below the Minimum Hopper Level 20 or (if Automatic Hopper Level is Y) dynamically set higher value based on Number of Active Agents * Auto Dial Level * ( 60 seconds / Dial Timeout ) * Auto Hopper Multiplier.

The leads appended to the hopper are ordered by the Campaign's setting for List Order DOWN COUNT and List Order Secondary VENDOR_DESCEND.

This means the leads are sorted by their current called_count column value followed by their vendor_lead_code AKA TLD Lead ID.

The leads in the hopper are then called by the dialer and queued to be sent to agents once they answer and are determined to be human (within 5 seconds max). The leads are dispositioned by agents to be whatever they choose OR they are automatically dispositioned by the dialer based on the outcome of the call:

  • NA - No Answer AutoDial

  • AM - Answering Machine SentToMesg

  • NA - No Answer AutoDial

  • AM - Answering Machine SentToMesg

  • AA - Answering Machine Auto

  • DROP - Agent Not Available

  • AL - Answering Machine Msg Played

  • PDROP - Outbound Pre-Routing Drop

AL/AM indicates when the agent (or the dialer) uses the "Leave Message" button/function and it plays the message or the call ends prematurely.

There are other automated dispositions regarding inbound calls such as DROP AFTHRS TIMEOT, and some obviously callable dispositions like B AB NEW N A but your account may have more dispositions with possibly unknown workflows.


Lead Reset Impact on the Hopper

The hopper loading is separate from our Lead Resets.

A reset makes a lead dialable but does NOT initiate a dial. It allows it to be pulled in via the hopper logic by changing called_since_last_reset to N.

There are multiple criteria you can use and multiple resets you can configure to be sure your leads are "reset" often enough for your hopper to never be empty.