HCC Docs

What a rep sees

A rep held for a dial looks available and hears nothing. Their desk shows a call only from the answer on, with the lead as its screen pop, and a dial nobody answers never reaches their stats or their recent calls.

A rep who goes away or logs off during a hold leaves at once: another free rep takes over, or the dial ends, as canceled.

Choose what's on the screen

The default is name, a link to the CRM record if the lead has a recordUrl, campaign and fields. .screenPop changes that, on a dial with a rep held and on an offer:

import { defineCampaign, leadRecordLink } from '@hcc/sdk';

export const renewals = defineCampaign('renewals')
  .call(salesQueue)
  .screenPop((lead) => ({
    name: lead.name,
    tier: lead.fields.tier,
    ...leadRecordLink(lead), // Keeps the "Open CRM record" link, if the lead has a `recordUrl`.
  }));

What it returns is what the desk shows, as rows, and all it's sent: what you leave out never reaches the rep's browser. leadScreenPop(lead) is what the desk shows with no hook, so you can start from that and take things out. It applies from the answer to the wrap-up, through a reload and a consult.

  • It runs ahead of the dial, after .call says who to dial and before a rep is held, so the lead doesn't wait on your server when they answer. Its answer stays with the call and isn't on the call you can read. Say what the rep needs from the lead's synced fields; it can be up to 2 minutes old by the answer.
  • Return nothing, or {}, and the rep sees no details. A held dial's desk still shows the number on the line. A preview always shows name and phone, since the rep is choosing whether to call them.
  • If it fails, runs out of time (about 8 s) or returns more than 4 KB of JSON, the rep sees no details and the call goes ahead. We log it, and it doesn't count towards pausing the campaign.
  • Only for a rep the campaign dials for. A flow target that sends the call to a queue follows the flow: the rep sees the context that flow gives them, not this.

testCampaign(renewals).screenPop(lead) returns what the rep would see: the default with no hook, and null for no details, whether that's a failure, too much, or nothing returned.