Guides
Asking a counterparty
Some questions you simply cannot answer on your own. "Where is my parcel?" is really a question for the carrier. "When is this back in stock?" is a question for your supplier. Normally that means an agent copying details into an email, waiting hours for a reply, remembering to come back, and finding the customer's thread again.
This feature lets the AI do that round trip itself. It emails the third party, tells the customer it's checking, waits — for hours or days if need be — and picks the conversation back up when the reply lands.
It is off by default for every organization. Get in touch if you'd like it switched on.
Sections#
- How it works
- Setting up a counterparty tool
- Fields are how reference numbers travel
- What the customer sees
- What you see on the conversation
- When the reply arrives
- When a reply cannot be read
- Asking by hand
- Deadlines
- Limits and safeguards
- Related
How it works#
You set up a counterparty tool: who to email, from which mailbox, and what details to collect. It behaves like any other agent tool, except its answer doesn't come back in the same breath.
When a customer asks something the tool covers, the AI:
- Writes the email and sends it to the counterparty.
- Tells the customer it is checking, in the customer's own language.
- Puts the conversation into a waiting state.
- Sits quietly until the counterparty replies, or until the deadline runs out.
- Reads the reply and answers the customer with what it learned.
The exchange with the counterparty is kept on its own side thread, so their emails never appear in your inbox as new customer conversations.
Setting up a counterparty tool#
Go to Settings → Agent tools and create a tool of type Email inquiry. Owners and admins can do this.
- Who the AI emails — the address the question goes to, for example a carrier's support inbox.
- The mailbox it is sent from — one of your connected email channels. Replies come back to this mailbox, so it has to be one HelpStack polls.
- How the question is sent — Send it automatically is the only option today. Draft it for approval is listed but not built yet.
- How long to wait (hours) — anywhere from 1 to 720 (thirty days). Pick something honest for that counterparty; a carrier support desk is not a same-hour operation.
- If nobody replies in time — see Deadlines.
- What the AI tells the customer while it waits — a short instruction the AI reads before writing its holding reply. Keep it brief and do not promise a time. Something like "Say you have asked the carrier and will come back as soon as they answer."
Give the tool a clear name and description, as you would any agent tool. That description is how the AI decides this is the right tool for the question in front of it.
Fields are how reference numbers travel#
This is the part worth getting right, and the one people get wrong.
Give the tool a field for every identifier the counterparty needs: a tracking number, an order reference, a SKU, an invoice number, whatever that particular counterparty works from. Each field you define is sent with the question, one line per field, labelled with the name you gave it.
Two reasons it has to be a field rather than something written into the message text:
Long numbers are stripped from free text. Before any inquiry goes out, HelpStack removes things that look like card numbers or other sensitive strings from the subject and body. A long tracking number written into the prose gets caught by that and leaves as [redacted]. A value in a field is one you deliberately asked for, so it is sent as-is.
Without a field, repeat questions collide. HelpStack stops the AI asking the same counterparty the same thing twice. It tells two questions apart by their fields. A tool with no fields makes every question look identical, and the second genuinely different one gets refused as a duplicate.
So: a tool whose parameters are all free text will both mail a redacted identifier and refuse follow-up questions. The settings form warns you about this when it spots it.
What the customer sees#
One short message saying you're checking, written in their language, based on your waiting instruction. Then nothing until there's something real to tell them.
The AI does not invent progress updates, and it does not promise a time unless your instruction told it to — which is why the guidance above is to keep the instruction vague about timing. A carrier that takes two days should not have been described as "back to you shortly".
What you see on the conversation#
The conversation's status becomes Waiting, and a panel appears below the thread headed "N questions the AI sent out". Each question is a card you can expand to see the whole exchange: what the AI wrote, what actually went out if redaction changed it, and every message back and forth with the counterparty.
Card states:
| State | Meaning |
|---|---|
| Waiting for a reply | Sent, nothing back yet. |
| Answered | A reply came back and answered the question. |
| Needs your read | Something came back that could not be read as an answer. See below. |
| No reply in time | The deadline passed. |
| Could not be sent | The email failed to send. The conversation is handed to a human, because the customer has already been told you're checking. |
| Cancelled | The question was closed without an answer. |
If the counterparty gave you a ticket number, it shows on the card as Their reference.
Time spent waiting is excluded from your resolution-time reporting. A three-day wait on a carrier is not your team being slow, and Analytics shouldn't say it was.
When the reply arrives#
HelpStack matches the reply back to the right question — through the mail headers, a dedicated reply address, or a marker in the subject line — so it works even when the counterparty's own ticketing system rewrites the subject, or answers from a different address than the one you wrote to.
It then judges what the reply actually is:
- It answers the question. The question is closed and the AI replies to the customer with what it learned, in the customer's language, through the normal reply path — so your channel's approval settings apply exactly as they do to any other AI reply.
- It's just an acknowledgement ("we've received your request, ticket #123"). A human is now on it, so HelpStack extends the deadline, notes their reference, and keeps waiting.
- It's unrelated. Ignored, and the wait continues.
- It can't be read. See below.
When a reply cannot be read#
If HelpStack cannot tell whether a reply answers the question, it does not guess and it does not go quiet. The conversation is handed to a human and the card shows Needs your read, with the exchange expanded and three choices:
- This is the answer — you've read it and it does answer. The question closes and the AI writes to the customer using it. The conversation leaves your queue and goes back to normal.
- Not the answer, keep waiting — clears the flag and keeps waiting for a real reply. The conversation goes back to Waiting, because that is what it is doing.
- Close the loop — you'll handle it yourself. The question closes with no answer recorded and the AI does not write to the customer about it. The conversation stays in your queue with the AI paused on it, since the customer is still owed a reply and you just said you would write it.
Whichever of the first two you pick, you don't have to put the conversation's status back by hand.
If more than one question on the conversation is waiting on you, the card says so — HelpStack can tell you a reply was unreadable but not always which question it belonged to, so read the exchange on each card before deciding.
Asking by hand#
You don't have to wait for the AI to decide. From any conversation, open the ⋮ menu in the header and choose Ask a counterparty.
Pick which tool to use under Who to ask, and the tool's fields appear above the message. Fill them in — that's where reference numbers belong, for the reasons in the section above. The subject and the message come pre-filled with something sensible; edit both freely.
From the moment you press Send it behaves exactly as an AI-initiated question does: the conversation goes into waiting, the customer is told, a card appears, and the reply is matched and judged the same way. The only difference is who wrote the question.
This is also the way to use a counterparty tool for a one-off — a case the AI wouldn't recognise as its job, or a supplier you rarely need to chase.
Deadlines#
Every question has a deadline. If it passes with no answer, the tool does whichever you configured:
- Send a reminder — one chaser to the counterparty on the existing thread, and the deadline extends once.
- Hand the conversation to a human — it lands in your queue.
- Tell the customer there is still no answer — the AI writes to the customer, honestly, that there's no news yet.
Whatever you chose, if an unreadable reply is already sitting on the conversation waiting for you, HelpStack hands it to a human instead. Something did come back, and a person should look at it.
Limits and safeguards#
- Three open questions per conversation. Enough for a genuinely complicated case, few enough that nothing runs away.
- The same question isn't asked twice. A customer nudging you doesn't produce a second email to the carrier.
- Chains are bounded. An answer can prompt one further question, up to three deep.
- Counterparty replies are treated as information, never instructions. Text arriving from outside cannot direct the AI to promise a refund or make an exception, whatever it says.
- Nothing is silently dropped. Mail that matches no open question is ingested as ordinary email rather than swallowed.
Related#
- Agent tools — the tools the AI can call.
- Email channel — connecting the mailbox questions are sent from.
- Routing & handoff — what happens when something reaches a human.
- AI replies & approval — how the reply to the customer is approved and sent.