Changelog
Notable changes to the Tandem platform, newest first.
Each entry is dated when the change reached the platform. Some features are enabled per organization, so a change listed here may not be in your sidebar yet — the page documenting it says so where that applies.
2026-11-12
- Added — Call Logs labels the number an inbound voice call came in on Toll-free or Local, the kind of number its call minutes are billed as, and lists a browser test call as Browser test call. On the Billing page's Usage tab, a note explains that one call can bill several lines, with a View by Conversation button. See Call Logs.
- Added — Route a SIP trunk number straight to a voice agent. A trunk number's sidebar on Admin → Phone Numbers and each number in the trunk editor on Admin → SIP Trunks now have a Workflow or Agent choice, and the trunk's Default Route can be an agent too. An agent's Phone Numbers card also lists trunk numbers, and unchecking one returns it to its trunk's default route. The Create SIP Trunk dialog has the same Default Route choice. See Route a trunk's calls.
- Added — A choice of MAIL FROM subdomain on Admin → Email Domains. MAIL FROM
Subdomain in the DNS Records dialog moves the
MXandTXTrecords offmail., for a domain where that name is already in use. The DNS Records list also now shows the MAIL FROM name Amazon SES has on file. See Choose the MAIL FROM subdomain. - Changed — When a workflow's Transfer to External node sends an inbound call to an outside number, its call minutes up to the transfer are now billed, beside its IVR time. Before, it billed IVR with no Local call or Toll-free call line. See How a call is billed.
- Changed — Tandy chats are now kept on Tandem's servers, per user and per organization, so a chat you start on one device is there on every other. A chat is deleted 90 days after its last message, and an attached file 30 days after you upload it. After that the file's chip shows Expired, and Tandy is told the file is gone. Delete on a chat and Delete All remove chats from the server immediately. Chats already in your browser move to the server the first time Tandy opens after this update. A very long chat keeps its most recent 500 messages or 200,000 characters, and its old attachments keep their names but not their files. A member you remove or disable in Manage Users loses their Tandy chats in that organization, and in any sub-tenant the disable removed them from. A member removed anywhere else loses them after 90 days. The browser now keeps only whether the Tandy dock is open. See Tandy.
2026-11-05
- Added — Call results and Needs Follow-up on the scheduling Bookings page. Each callback's badge says what happened to its call: Upcoming, Due now, Call started, Call failed, Not called, Call status unknown, No call made, Handled, or Cancelled. Call started means the calendar's workflow started, not that the customer answered. The Needs Follow-up status filter lists callbacks whose call failed or never happened, and Mark Handled and Reopen in a callback's sidebar clear and restore them. Rescheduling a callback clears its call result. The time pickers in New Callback and Reschedule show one day's open times at a time under a row of days. See Needs Follow-up.
- Changed — The agent editor no longer locks a published version. You can edit it as you would a draft; Save as New Draft (and ⌘S) saves the edits as a new version, and the published one is not changed. A rename is the exception: the name isn't versioned, so it applies when you save. This matches the workflow editor. See Versioning.
- Added — Coach on an earlier message on the Supervisor page. Hover a message from the agent or the customer and click the coach icon. The note is sent with that message quoted, and shows the quote in the transcript. See Coaching the agent.
- Added — Open times on the scheduling Bookings calendar. With one calendar selected,
open times are tinted and full times are greyed, a calendar with several seats per time shows
notes such as
2 of 3, and only an open time starts New Callback. Grid rows follow the calendar's slot length. A callback's sidebar now has Cancel Callback. On a phone or a narrow window, Bookings lists callbacks as cards, the calendar shows the day as a list with New Callback on each open time, and Calendars shows each calendar as a card. See Open times on the calendar. - Added — Schedule callbacks on an agent's Built-in Tools row. The agent checks a calendar's open times and books a callback for the caller, in a voice call or website chat. It never books As soon as possible or a time less than 15 minutes away, and books at most one callback per conversation. On a test call it always asks for a callback number. Callbacks it books show Booked By Agent. See Schedule callbacks and Booking from an agent.
- Changed — The Pricing panel on the Billing page is regrouped: AI first, with the tokens included per conversation and the overage rate, then calls, messaging, phone numbers, seats, and compliance costs. Calls and text messages show the inbound and outbound price side by side, and the half-minute rounding is said once at the top instead of under each row. The panel no longer says each charge is rounded up to the nearest cent, because individual charges aren't rounded. See What things cost.
- Changed — The Billing page's Usage tab shows what usage cost, at your contract's rates, with a rate and cost on every row. By Product totals each product for the range, and the range's total shows how much was paid from credits and from your balance. By Day lists each product per day. Filters narrows by category and product, the range starts at This month, and Export downloads the rows as a CSV file. Group by is removed. By Conversation lists each conversation with what it used and cost, and a conversation's page in Call Logs shows its cost. See Usage and What a conversation cost.
- Changed — Digital AI and token overage are now charged. A web chat is charged for Digital AI once, when an AI agent first replies, and a chat no AI agent replies to is not charged. Tokens past a conversation's allowance are charged in whole thousands, with one allowance per conversation on calls and web chats: as a web chat goes, and on a call when the AI agent hands it on or the call ends. Until now neither was charged. See How AI is priced and Fair use.
- Changed — Voice AI time is now charged at the per-minute rate on the Pricing panel. It counts only while an AI agent has the call, and stops when the agent hands the call to a workflow, when a transfer connects, or when a supervisor takes over. A call's voice AI time is added up and then rounded up to the next half minute. Until now no voice AI charge was applied. See How AI is priced.
- Changed — In a website chat, agents no longer ask visitors to spell or read back what they
typed. The
collect-codeandverify-identityplatform skills and the data-collection field guidance use chat wording, andread-back-valuesis skipped in a chat. Calls are unchanged. See Platform skills. - Changed — Call time, IVR time and voice AI time now round up to the next half minute. Any part of a half minute bills as a whole one, so a 13-second call bills as half a minute and a 65-second call as a minute and a half. Before, they rounded to the nearest half minute, and a call under 15 seconds was not billed. See How time is rounded.
- Fixed — A call that ends because of a system error is no longer billed. That covers a call turned away because the platform was busy, a call whose workflow failed to start, and a call dropped because its AI agent could not be connected. See Billing.
- Changed — The scheduling booking page now opens on the open times, with a Call me now card above them when As soon as possible is on. Nothing is selected to start with, and the Continue button names the choice. The confirmation shows You're booked, Add to calendar for a picked time, and what happens next, including whether a confirmation message can be sent. When none can be, it says so and offers Copy link. The callback's own page shows the same lines. The form and the inline embed now fit phone screens, and the inline embed's height can shrink between steps. See Callback scheduling and Sharing and embedding.
- Fixed — On a phone, the scheduling booking page's arrows skipped days. A phone shows about three day cards, and the right arrow loaded the next set of days, so days past the edge were reachable only by swiping. The arrows now move through the hidden cards first and select the first new day. Long names, emails, and reasons on the confirmation and the callback's own page now wrap instead of running off the screen. See What customers see.
- Added — Number customers see on a calendar's Call tab. It sets the number shown on
the confirmation as
The call comes from {number}. It does not change the caller ID the workflow dials from. See Calls. - Changed — Pricing on Admin → Billing now shows the prices on your account's
billing contract, including any prices agreed for your account. Before your account has a
contract it shows the standard rates and says so. A price the contract does not set is no
longer listed.
GET /v1/billing/ratesnow returns each product's name and price, in cents or as tiers, with asourcefield saying where the rates came from. See Billing. - Added — Request and response details on tool calls. An integration tool's row in a
transcript now shows the HTTP status its endpoint answered with, as a chip beside the outcome.
A
404still reads Succeeded, because the tool got an answer. Admins can expand the row for Request, Response, and Agent saw tabs, with bodies cut at 64 KB. Details are kept for 90 days, and on a call or chat they are deleted with the transcript. They appear on the Supervisor board, under Recent Calls, in a preview call, and in test results. The Spark MCP'sget_conversation_transcriptreturns the same fields under the same check. See Request and response details. - Changed — Phone number labels and variables now have limits. Updating a number with
PUT /v1/routing/phone-numbers/{phoneNumberId}returns a400when the label is over 200 characters, or when the variables exceed 50 entries, 128 characters in a name, 2,000 characters in a value, or 64 KB in total. Requests over these limits used to be accepted, or failed with a500near the storage limit. An update sends the number's full set of variables, so a number that already has more than 50 must be brought under the limit in that same update, including an edit made in Phone Numbers. - Removed —
/v1/messagingis no longer part of the public API. It had no published reference here, and workflows and agents send texts with Send SMS as before. A request toPOST /v1/messaging/sendwith an access token now returns404. - Added —
GET /v1/billing/usage/costsreturns what your usage cost per product per day, at your contract's rates, and how much of each day was paid from credits and from your balance. Amounts are in cents and may be fractional. See List usage costs.
2026-10-20
- Changed — Scheduling limits moved from Admin → Scheduling to Limits on the
Flows → Scheduled page, and only an Owner or Admin can change them. A Member no longer sees
Limits, and
PUT /v1/settings/scheduling-policynow refuses a Member with403 FORBIDDEN. The old address redirects to Scheduled. See Limits and defaults. - Changed — Voice agents on Claude Haiku 5.5 can turn on Reasoning, and the thinking budget picks an effort level. With Reasoning off, which is the setting every existing Claude Haiku 5.5 agent has, the model no longer thinks before it answers, so replies start sooner. Turn Reasoning on to keep the thinking. See Claude Haiku 5.5.
- Added — Scheduling → Bookings can book callbacks: New Callback, Schedule Follow-up from any callback, and a click on an empty half hour of the calendar. Drag a callback on the calendar to reschedule it. The customer gets the same confirmation and reminders as when they book. See The Bookings page.
2026-10-16
- Changed — The app, the webhook alert email, and these docs say Tandem where they still said
Spark. An account top-up shows as
Tandem account top-upon the Stripe checkout page, and the users export is namedtandem-users-<date>.csv. Webhook header names such asSpark-Signature, the chat widget's embed code, and access-token prefixes are unchanged, so existing integrations keep working. - Changed — Editing with Tandy moved to /docs/agents/voice-agents/editing-with-tandy. The old address redirects there.
2026-10-15
- Added — Insights → Call Logs has a Handled by column showing the workflows and AI agents that took each conversation, and Type and Agent filters. See Who handled a conversation.
- Added — Scheduling → Bookings has a calendar view: a week or day grid of callbacks in your time zone, with each calendar's color. Click a callback to open its details. See The Bookings page.
- Added — A parent organization's Audit Log and Call Logs include its sub-tenants' events and conversations, with an Organization column and filter. See See a sub-tenant's activity from the parent.
- Added — The Contacts page can list your Zendesk end-users. Switch to Zendesk, or to
All to see them under your contacts, then page and search them and open any one in a
read-only sidebar. Needs a Zendesk integration with
users:readin its scopes. See Your Zendesk users. - Changed — On Contacts, open a contact with Edit on its row; clicking the row no longer opens it.
- Changed — A calendar's Delete Calendar moved from the editor's header to the bottom of Basic Info, and the Calendars list can delete one from its row. On Bookings, Reschedule and Cancel Callback are icons in the Actions column. See Pausing or deleting a calendar.
2026-10-14
- Changed — Tandy's page moved from
/ask-sparkyto/ask-tandy. Old links and bookmarks, including deeper ones like/ask-sparky/history, redirect to the same place. Opening the app at its root address now draws the Tandem logo, with the name sliding out beside it, before going to Tandy's page; reduced motion skips it. - Changed — The left navigation groups Agents, Flows and Integrations under Automations. Agents, Workflows and Integrations are rows in it, with their pages indented beneath them: Knowledge Base and Coaching under Agents, Scheduled and Audio Files under Workflows. Page addresses and the breadcrumb are unchanged.
- Changed — Tandy has its own icon: a sparkle with two of the Tandem logo's lanes in its corner, in place of the generic sparkle.
- Added — IVR usage: time a call spends in a workflow is charged per minute, rounded to the nearest half minute. Time with an AI agent or a person is not included. See How IVR is priced.
2026-10-13
- Changed — Tandem has a new look across the app and these docs: a new logo, new colors,
and the Plus Jakarta Sans typeface. The product is now called Tandem. A chat widget with no
Brand Color set now uses violet (
#a875ff) with black text, where it used indigo with white. To keep indigo, set Brand Color to#4f46e5. See Brand color. - Changed — The in-product assistant, Sparky, is now called Tandy. It works the same way.
- Changed — Where the chat widget uses your Brand Color as text (the selected tab, links, and Start a new conversation), a color that is too light to read on the white panel is shown darker, until it reaches the 4.5:1 contrast minimum. Fills such as the header are unchanged.
- Added — An agent in a website chat can hand the conversation to a workflow with a Workflow (Handoff) tool and take it back when the workflow finishes, as on a call. Being rolled out per organization. See Handoffs in website chat.
- Added — Linked Records on a contact. Link a contact to the same person in your Zendesk by pasting their profile link or user id, and open their Zendesk profile from the contact. Needs a Zendesk integration. See Linking a contact to Zendesk.
- Changed — Voice AI time is billed to the nearest half minute, the same as call time. The AI Voice rate in Pricing on Admin → Billing now says so. See Billing.
2026-10-12
- Added — Agent tests can set a caller number, a contact, keypad entries, workflow variables,
and a returning caller's memory, so
capture_dtmf,set_workflow_variable,update_contact,lookup_contact, andtransfer_to_voice_agentcan be tested. The contact and memory exist only in the test. A new check, Sets a workflow variable, checks what the agent recorded. See Call inputs. - Changed — Tests that check or stub
capture_dtmf,set_workflow_variable, ortransfer_to_voice_agentare now valid, because tests offer those tools. A saved test with a Tool not called check onupdate_contactorlookup_contactand no caller now reads Invalid. A test whose agent transfers to another agent now ends Handed off. - Fixed — Saving an agent test now refuses a tool name that isn't a tool, such as a setting's name, and names the tool you meant. Suggested and recommended tests use the agent's real tool names. A Tool not called check on a tool the version doesn't have now reads Invalid instead of passing. See Agent tests.
- Changed — Tests on agents with keypad capture, Keypad Input, or Set Workflow Variable now see those tools (and the keypad sentence in the prompt), so their results can change.
- Changed — A website chat, and the chat preview in the chat widget editor, no longer offer an agent's Workflow (Handoff) tools, which told the visitor they were being transferred without transferring them. Calls are unchanged.
- Changed — On an agent's Tests page, select a test's row, or View Results in its ⋮ menu, to open its latest result; a test that hasn't run opens with Run Test, and a repeated test opens on its first attempt that didn't pass. A finished run shows how many tests passed or failed, with View Results, and each criterion in a result is marked AI judged. Enabled per organization with tests. See Run tests.
2026-10-08
- Added — Schedule Workflow and Cancel Scheduled Workflow nodes run a published workflow once at a later time, from a workflow or an AI agent, and cancel it by key. Being rolled out. See Scheduling workflows.
- Changed — Scheduled runs now use the version published when they fire, and every organization has scheduling limits an admin can change on Admin → Scheduling. See Limits and defaults.
- Added — Recommend Tests on an agent's Tests page writes up to 3 tests from the version's setup and recent calls for you to review. Suggested tests, including coaching's, now also appear on the Tests page, with Accept All. The Agents list gains a Tests column with each agent's result on its published version. Enabled per organization with tests. See Recommend tests.
- Fixed — An agent whose tests were all edited after their last run showed "Passing 0/N". It now shows Not run.
- Added — In the workflow editor, a + beside each exit that isn't connected yet adds a node there and connects it to that exit. Add Node now leads the controls at the bottom of the canvas, and an empty workflow shows it in the middle of the canvas. See Adding nodes.
- Fixed — On the Coaching page's Decided tab, an applied recommendation said "Changed since this was recommended". Decided recommendations now show the change as it was recommended, under What Changed or What Was Proposed. See What a recommendation contains.
- Fixed — In a narrow window, the Coaching page squeezed an agent's recommendations until they overflowed or disappeared. The agent list and the agent now take turns there, and Apply and Dismiss stay on each recommendation whenever it has room. See The agent list.
- Added — Recognize texters, under Admin → Contact Attributes → Settings. With it on, the texts your workflows send are matched to a contact by phone number, and a number no contact holds gets a new contact. Texts your phone numbers receive are matched once inbound texting on your account has moved to the current messaging service; ask support whether yours has. Off by default. See Text messages.
- Added — Agent tests. Write scripted or simulated conversations that check an agent's tool calls, disposition, and replies, run them against any version, and see the results in the publish dialog. Enabled per organization. See Tests.
- Added — Three more ways to write agent tests: Make a Test on a conversation in Call Logs
drafts one from what was said, Tandy writes and runs tests with your approval
(
/writing-agent-tests), and coaching suggests tests from the calls it reviews and after you apply a recommendation. The MCP server gains eight agent-test tools. Enabled per organization with tests; suggestions also need coaching. See Make a test from a conversation. - Changed — Deleting a contact now asks whether to also delete the person's conversation history: call records and transcripts, and website chat conversations. The box is checked by default; cleared, the contact and what your voice agents remember about the person are deleted and the history stays. See Deleting a contact.
- Changed — The contacts API's delete takes
history=keepto keep the conversation history, andGETandPUT /v1/contacts/settingsread and change Recognize texters.
2026-10-07
- Added — Callback scheduling: booking pages where customers pick a callback time in their own time zone, or ask to be called as soon as possible. Set each calendar's hours, capacity, and booking form under Scheduling → Calendars, see what was booked under Scheduling → Bookings, and share the page by link or embed it on your website. Customers get a confirmation, reminders, and change notices by email and text, and each calendar can send signed webhooks for every booking event. Enabled per organization. See Callback scheduling, Booking messages, and Webhooks.
- Added — Callback scheduling can call the customer: at the booked time, Tandem runs a published workflow you choose on the calendar's Call tab. See Calls.
- Changed — A customer who texts STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, or QUIT to any of your numbers no longer gets texts from your organization's workflows: a Send SMS node to their number takes its fallback exit. START or UNSTOP undoes it, and HELP texts back what the messages are. Any of these words texted on its own no longer reaches a workflow, including a Send SMS node waiting for a reply, so a workflow that asks customers to reply CANCEL needs a different word. Tandem acts on these words once inbound texting on your account has moved to the current messaging service. See STOP, START, and HELP.
- Added — Test in the workflow editor runs the saved version as a browser voice call, a run with starting variables, or a first SMS or chat message. The test stays on the canvas, which shows the path the run takes, and a run panel shows each node's exit, response, and variables. Being rolled out. See Test a Workflow.
- Changed — During a test, a Send SMS node in the workflow under test records the message it would have sent instead of sending it. This applies to Call Workflow browser test calls as soon as it deploys, whether or not Test is rolled out to your organization. An AI Voice Agent's workflow tools and Send SMS node tools still send real texts during a test call. See Text messages aren't sent.
- Added — Import CSV on the Contacts page creates and updates contacts from a CSV file of up to 20 MB and 50,000 rows. Match each column to a contact field, then follow the import while it runs. A row that matches an existing contact fills in only what that contact is missing, and a row whose phone number and email address belong to two contacts flags them as possible duplicates to merge. Enabled per organization with Contacts. See Importing contacts.
2026-10-06
- Added — On the Coaching page, a recommendation written against a setting that has since changed, for example because another recommendation for the same setting was applied, is labelled Outdated with a Refresh button beside it. Refresh rewrites it against the current value. Apply All leaves outdated recommendations out. See When a recommendation is outdated.
- Changed — Coaching's agent changes now come only from calls a supervisor coached or took over, unless you turn on Automatic reviews for the agent on the Coaching page, which also reviews all of its calls every 10, 25, or 50 calls. Automatic reviews are off for every agent until you turn them on, so an agent that was reviewed every 25 calls no longer is. Review Now moved from the agent's Safety card to beside that setting. Each card now says who coached the calls it's built on, or, from an automatic review, how many of the calls it read it cites. See What triggers a review.
- Fixed — Applying a coaching recommendation to an agent on versioning no longer fails with "Changed since this was recommended" when nothing had changed. Neither does Apply All after you have applied another recommendation for the same agent.
- Added — Merge two contacts. A contact with a Possible duplicate badge lists the records it was flagged against in its sidebar, and Merge into this contact folds one of them into the contact you have open: identifiers move over, notes and tags combine, and its conversations and caller memory follow. Merging can't be undone. Enabled per organization with Contacts. See Merging two contacts.
- Added — Let the agent look up contacts on a voice agent's Contacts card. It gives
the agent
lookup_contact, which finds a contact by phone number or email address, up to three lookups per agent session. It needs Recognize callers on, and works on voice calls only. Off by default; pair it with theverify-identityskill. See Let the agent look up contacts. - Changed — Deleting a contact now also deletes every contact merged into it, the website chat conversations and transcripts for its chat visitor ids, and its history in reporting. Reporting still keeps its record of every call, text, and chat, with the number it came in on. See Deleting a contact.
- Changed —
lookup_contactis now a reserved tool name. If one of your agents already has a custom tool namedlookup_contact, rename it. Until you do, that agent keeps running its own tool in place of the built-in, Let the agent look up contacts does nothing on it, and the agent can't be saved again. A tool by that name on a connected MCP server is no longer offered to the agent. - Changed — Joining a call from the Supervisor board lets the agent finish the sentence it's on, for up to 4 seconds, and waits up to 10 seconds for the caller to finish speaking before the agent tells them a colleague is joining and hands over. The agent no longer cuts off mid-sentence. Being rolled out with the take-over. See After a supervisor takes a call over.
- Fixed — A microphone that stops during a call you've taken over, a headset disconnecting say, no longer leaves the caller hearing silence without you knowing: another microphone is picked up if there is one, and otherwise a message says the caller can't hear you, with Try Again. Join also says when there's no microphone, or another app is using it, instead of asking you to allow access. Being rolled out with the take-over. See After a supervisor takes a call over.
2026-10-02
- Added — A contact's sidebar lists every conversation the contact had under Conversations, newest first, on every channel. That includes calls to an IVR workflow from one of the contact's phone numbers. Click a row to open it in Call Logs. Enabled per organization with Contacts. See A contact's conversations.
- Added — In Insights → Call Logs, a call from one of your contacts shows the contact's name in the Source column. Click it to open the contact on the Contacts page. Enabled per organization with Contacts. See From Call Logs.
- Changed — A name or tag search on the Contacts page covers every contact in your organization and pages with Previous and Next. It used to look through recently active contacts only and return one page. Enabled per organization with Contacts. See Finding a contact.
- Changed — The ElevenLabs integration now requires the Text to Speech permission.
Test Connection and saving the key both check it, and a key without it is rejected with
ElevenLabs' message naming
text_to_speech. A key that is already saved isn't changed, but it can't be saved again until the permission is added. See ElevenLabs. - Fixed — A voice agent whose ElevenLabs voice failed at the start of a call could skip its greeting. When the agent switches to its Amazon Polly standby voice, it now speaks the greeting in that voice instead.
- Fixed — Creating a sub-tenant could fail with
Request timed out.even though the sub-tenant was created. It now waits for the result. If no answer arrives, it tells you to check the Sub-Tenants list before trying again, so you don't create a duplicate.
2026-10-01
- Added — Monitoring on the Supervisor board. One supervisor at a time monitors a conversation and can act on it, and everyone else who opens it views it read-only. Being rolled out. See Monitoring and viewing a conversation.
- Added — A call's transcript carries on after a supervisor takes it over, with the caller and the supervisor labelled apart. Caller memory and coaching take that part in, and Call Logs shows it. Being rolled out. See After a supervisor takes a call over.
- Changed — A call a supervisor coached the agent on starts a coaching review as soon as it ends, rather than waiting for the agent's next 25 calls. See Coaching.
- Removed — The ElevenLabs Agent workflow node. A workflow that still contains it ends the call with an error when it reaches the node, and can't be saved until the node is removed. To hand a call to an AI agent, use the AI Voice Agent node instead. See Using an Agent in a Workflow. The ElevenLabs integration stays: voice agents use it for ElevenLabs voices and pronunciation dictionaries.
2026-09-29
- Added — ElevenLabs pronunciation dictionaries for voice agents. Pick up to 3 dictionaries from your ElevenLabs workspace under the ElevenLabs voice character settings, and the agent applies them to every line it speaks. See Voice and speech.
- Added — Gemini 3.8 Flash and Gemini 3.5 Flash-Lite for voice and chat agents, for organizations that have connected a Gemini account. The Thinking budget picks a Gemini 3 thinking level. See Brain.
- Removed — Gemini 2.5 Flash and Gemini 2.5 Pro, which Google is limiting to existing users. An agent saved on either now runs on Gemini 3.8 Flash, opens in the editor with it selected, and keeps its other settings.
2026-09-28
- Added —
create_workflow_versionandpublish_workflow_versionon the MCP server. An AI tool can now change a published workflow end to end: copy it into a new draft, edit the draft, and publish it, with no trip to the workflow editor. See Building with AI. - Added —
publish_voice_agent_versionon the MCP server, for publishing an agent made withcreate_voice_agentor rolling an agent back to an earlier version. - Added — Two ElevenLabs engines for voice agents: v3 Conversational (Eleven v3) and v4 Turbo (Eleven v4, English voices only). Both read only Stability from the voice character settings, and each call on either holds one ElevenLabs dialogue session. See Voice and speech.
- Changed — Tandy can make any change the MCP server offers, not only the ones it has a dedicated card for. Each such change waits on an approval card that names the action and every value it will send, and nothing runs until you press Approve. See Building with AI.
- Fixed — The MCP documentation said an agent from
create_voice_agentis live at once. It is saved as an unpublished version0.1and answers no calls until a version is published. - Removed — Turbo v2.5 is no longer offered as a Voice Engine for ElevenLabs voices. ElevenLabs has deprecated it in favor of Flash v2.5, which it describes as equivalent with lower latency. An agent already using Turbo v2.5 keeps it and can still be saved and published; choosing another engine removes it from that agent's list.
- Fixed — A voice agent using a Polly voice now speaks a sentence containing
&or<, such as "AT&T". Polly used to reject the sentence, and the caller heard nothing for it.
2026-09-25
- Added — A voice agent can recognize its caller as a contact. Turn on Recognize callers on the agent's Contacts card and a call is matched to a contact before the greeting, on the caller's number, creating one when nothing matches. The agent is told the name and what is already on the record, and caller memory is filed under the contact rather than the number the caller called from — so once both of a person's numbers are on one contact, their calls read as one history. Off on every existing agent until you turn it on. See Contacts on an agent.
- Added —
update_contact, a built-in tool the same card switches on. On a call, the agent can set the caller's name, append a note, add tags, and fill in the attributes marked Agent can edit. It cannot add a phone number or an email address, and it cannot reach any contact other than the one on the phone. See Built-in Tools. - Added — A returning website chat visitor is matched to a contact, and their conversation is attached to it. A visitor arriving for the first time is matched to nothing. The agent is not told who a chat visitor is; that part is voice only. Text messages still neither create a contact nor attach themselves to one.
- Added — A completed call carries
contactIdin the voice-agents API. See Get a call. - Changed — Deleting a contact now also erases what your agents remember about that person, for the contact itself, for every phone number it held, and for every chat visitor id it held, along with the dropped-call state, call records, and stored transcripts for those phone numbers. It is not a completed right to erasure: website chat conversations stay, and reporting keeps its own records for its retention period plus a marker under the deleted contact's id. See Deleting a contact.
- Changed — The Invoke Lambda node takes
fallbackwhen your function throws or runs past its own configured Lambda timeout. It used to takedefault. The message is the function'serrorType: errorMessage, orerrorTypealone, with no stack trace. See AWS. - Changed — The Integration node's Timeout is capped at 25 seconds. With Fire & Forget on, the node now waits up to its Timeout for the request to go out before it moves on. It used to move on at once, and a request could be lost.
- Changed — The SharpenDB UPDATE and DELETE nodes refuse a query with no condition,
a condition with a blank value, a LIKE pattern of only
%, or a NOT IN list holding an empty value, and takeinvalidInputwith the reason. A blank value used to be dropped, so the query ran against more rows than intended, up to the whole table. In any SharpenDB condition, IS NULL, IS NOT NULL, IS TRUE, and IS NOT TRUE need no value, and a value typed into one is ignored. - Changed — A SharpenDB query is given 20 seconds, and one that gets no answer takes the
node's
timeoutexit, orfallbackwhentimeoutis not wired. The node's Timeout field is not applied. See Error Handling. - Changed — Changes on Email Domains (domains, Check Status, senders, and Email Settings) are enforced as administrator-only on the server. Every role issued today carries the administrator role. A domain claim left unverified for more than 7 days can now be taken over by another organization that adds the same domain. See Email Domains.
- Changed — A secret's value echoed back in an integration's response is replaced with
[REDACTED], and a direct call to the integrations API that references a secret needs the administrator role. See Secrets & Variables. - Changed — A SIP trunk refuses a phone number another organization already routes to
Tandem, with
Already in use by another organization. - Changed — Loading an MCP server's tools no longer follows a redirect. Save the final URL.
- Changed — Tandy's chat history is kept separately for each user and each organization, so the next person to sign in on a shared browser, or you in another organization, no longer sees it. It is cleared from the browser when you click Log Out, or when Tandem finds on its next request that your session has expired. Existing Tandy history is cleared once when this update reaches your browser, because it was stored without an owner.
- Fixed — Opening another workflow from inside the workflow editor, for example from a link in a Tandy proposal, kept the previous workflow's steps on the canvas when both were at the same version, and saving wrote those steps into the workflow you had opened.
- Fixed — Saving in the workflow editor while a version was still loading, or after it failed
to load, could overwrite that version with an empty or stale canvas. A save before the version
loads is now refused with
This version has not loaded, so it cannot be saved., and a failed load shows This version couldn't be loaded with Try Again and Back to Workflows in place of the canvas. - Fixed — Clicking Restart on a preview call could leave the new call unable to end: Hang Up did nothing and the microphone stayed on.
- Fixed — In the chat widget, opening another conversation from history or starting a new one while a reply was still arriving wrote that reply into the conversation you switched to.
- Fixed — Duplicating a workflow whose steps could not be read or copied created a copy with no steps and reported success. It now shows an error instead.
- Fixed — The Workflows page could fail with
Request timed out.for an organization with enough workflows to span several pages of the list, even when every page loaded. - Changed — Disable on Admin → Manage Users now removes the person from your organization instead of switching off their Tandem account, so it no longer locks them out of other organizations. An Owner's disable also removes them from each sub-tenant the Owner owns, and their access tokens are revoked everywhere they were removed. This can't be undone from the page: there's no Activate option any more. To restore access, invite them again. An account disabled before this change still shows as Disabled; contact support to re-enable it. See Disable a user.
- Changed — Only an Owner can invite someone as an Owner, make someone an Owner, change an
Owner's role, or disable or remove an Owner. Anyone else gets
Owner access required, and the Users page no longer offers those actions to them. The same rule applies to invitations sent through Tandy. - Changed — A person's name can't be edited, and Last Seen shows Never, for someone who also belongs to an organization outside yours and its sub-tenants. Inviting such a person doesn't change their name either.
- Changed — Creating a personal access token needs current, active membership in the
organization. A removed, disabled, or still-pending member gets
403. See Authentication. - Fixed — Adding a file document to a knowledge base without a completed upload failed with a
server error and left a document stuck in Pending. It now fails with
400andNo uploaded file found for this docId, and nothing is created. - Fixed — Deleting a knowledge base whose documents couldn't all be deleted answered a generic
server error. It now keeps the knowledge base and answers
500with the codePARTIAL_DELETEand how many documents failed. Delete it again to finish. - Fixed — A Media API request that reached the service with no organization answered
500. It now answers401with the codeUNAUTHORIZED. Replacing a prompt's audio file now deletes the previous recording, and a JSON prompt update that sendsname,friendlyName, orlanguageas anything other than a string is refused with400and<field> must be a string. - Fixed — An agent that ends the call without a closing line now hangs up about 2 seconds after its turn, where it could previously leave the caller on the line for up to a minute. A farewell that's still playing when the agent ends the call is played to the end. If the idle timer runs out while the call is ending, the agent no longer speaks the idle prompt over its goodbye, and the disposition the agent chose is kept rather than replaced by the idle Disposition.
- Fixed — When the caller interrupts while a tool is running, the agent no longer treats the tool as failed. If the tool's result has come back by the caller's next turn, the agent is given it; otherwise it's told the outcome is unknown and not to run the tool again unless the caller confirms. A tool that finished alongside the interrupted one keeps its result. A linked agent that doesn't answer in time is reported the same way: the agent is told its actions may have completed and not to retry without checking with the caller.
- Changed — An Integration node refuses to send a request when a variable's value holds a
{{secrets.name}}reference, including one assembled from several variables. Before, a caller's reply or an API response carrying that text was sent with the secret filled in. The run now ends with the errora variable value may not contain a {{secrets.*}} reference, and the node does not take itsfallbackexit. An escaped\{{secrets.name}}typed into the node is refused the same way. See In a workflow: the Integration node. - Changed — A Logic+ Subroutine node whose called workflow fails takes its
fallbackexit. It used to takedefault, as if the called workflow had succeeded. An unwiredfallbackgoes to an enclosing Try / Catch or Loop Group. With neither, the calling workflow ends with an error, and an AI agent that handed the call to it is told the workflow failed. This is the same whether the called workflow failed straight away, after pausing, or inside a subroutine of its own. A called workflow that cannot start also ends this way when nothing handles thefallback: one that is not found, has no published version, has no starting node, calls itself or its caller, or cannot be loaded. Before, the calling workflow ended as a success. - Changed — Regex Replace and Regex Replace All refuse more patterns prone to
exponential backtracking, such as
(a|aa)+and(\d+)+. The check runs when the node runs: a workflow using one still saves and publishes, and the Set Variable node takes itsfallbackexit. See Patterns Regex Replace refuses. - Fixed — An Integration node sends a top-level
timeoutfield in its Request Body as you wrote it. It was multiplied by 1000, and a non-numeric value becamenull. The node's own timeout setting is unchanged. - Fixed — Slice with a range ending in
0, such as0:0, returns an empty string. It returned the whole value. - Fixed — A caller number listed in
devAnison more than one workflow version runs the highest of those versions, compared as numbers, so0.10wins over0.9. Versions were compared as text, which picked0.9. - Fixed — Flows → Scheduled lists a queued run that is waiting to start. It listed only delayed runs.
- Changed —
POST /v1/workflows/{workflowId}/executewithqueueandsyncbothtrueanswers202when the run is still going after the five-minute wait, and the run carries on. It used to answer500and tear the run down. The202body hasworkflowId,conversationId,workflowInstanceId,workflowType, andjobId, with noresponseand noposition. A run that fails still answers500. - Changed — Executing or scheduling a workflow with a
conversationIdthat another organization is using answers404withConversation not found., from both/v1/workflows/{workflowId}/executeand/v1/workflows/{workflowId}/schedule. Before, the run started on that conversation. - Changed —
POST /v1/workflows/{conversationId}/resumewithsyncset totrueanswers200only when the paused run resumed. It answers404when the run is no longer paused by the time it resumes, and409when another resume of the same conversation got there first or the run is paused on a node that does not take thistypeof resume. Before, all three answered200, though the request resumed nothing. - Changed —
PUT /v1/organizationLimitsis removed. To change your organization's limits, contact support. - Changed — An organization's node-execution limits have a ceiling: 5,000 node runs per conversation, 250 runs of the same node per conversation, and 5,000 node runs per workflow run. A limit set higher than that runs at the ceiling.
- Changed — An agent no longer follows redirects from an MCP server. A server that answers with any redirect, including one that only adds a trailing slash, fails to connect and the call or chat runs without its tools, so set the integration's Server URL to the address the server answers on directly. See Add an MCP tool.
2026-09-17
- Changed — One call now has one conversation id from start to finish. An AI agent that invokes a workflow, a hand-off from a workflow to an agent and back, and a switch from one agent to another all keep the id the call arrived with, instead of minting a new one part-way through. A web chat reports under a single id the same way.
- Changed — Everything on a call now shares one set of variables. What an agent captures is readable by the workflow it invokes, and what a workflow sets is readable after a hand-off. The consequence to design around: two workflows on one call that write the same variable name overwrite each other, where previously each had its own set. Different names never collide. See Scope.
- Changed — Call Logs is one row per conversation, however many workflows it ran. The Workflow and Workflow ID columns are replaced by Handled by, which names the agent and the workflows in the order they took the call. Expanding a row lists every hop on the call in order — agent started, workflow invoked, handed off, transferred, ended — with each workflow's step timeline underneath it, and View in Flow now sits on the workflow you want to open rather than on the row. The log carries no variable values, tool arguments, tool results or transcript text. Conversations from before this change keep their existing rows and show no hop list. Being rolled out per organization. See Call Logs.
2026-09-15
- Added —
update_workflow_nodeson the MCP server, for changing individual steps of a workflow.update_workflowreplaces every step, so an AI tool had to read a whole workflow and send it all back to change one setting. This one takes a list of operations —setFields,setExits,add,remove,rename— applied in order and merged on the server, and checks the whole workflow before writing.renamerepoints every exit aimed at the old name. See Building with AI. - Added —
find_nodeson the MCP server: which step plays a given prompt file, which steps transfer to a queue, what leads to a given step. It matches a case-insensitive substring over a step's settings, nested ones included, and names the setting that matched rather than returning the step whole. See Building with AI. - Added —
get_workflowcan return less.include="outline"gives each step's name, type and exits without its settings, andnamesreturns only the steps you ask for. Reading a large workflow to find one step no longer costs the whole thing.
2026-09-14
- Changed — Voice agent call transcripts are stored by default. They used to be kept only for an agent with post-call analysis switched on; now every voice agent stores one unless you turn off Store conversation transcripts on its Safety card, and an agent that also redacts caller PII stores none until you turn that switch on yourself. Post-call analysis still stores a transcript regardless of the switch. Transcripts are kept for 90 days either way. See Transcript retention.
- Added — Agent-change recommendations on Agents → Coaching: Tandem reads a voice agent's recent phone calls and proposes a specific configuration change, backed by the conversations it read, for you to apply or dismiss. Applying one on an agent that has been moved to versioning publishes a new version, so it can be rolled back; on an agent that hasn't, it edits the live configuration directly. Enabled per organization. See Coaching.
- Changed — A chat widget pointed at a workflow now starts the run when the visitor opens the panel, rather than waiting for their first message. The workflow runs until it reaches a Send Chat Message with Wait for Reply switched on, or until the conversation ends, so it can ask the first question itself. The widget's own Greeting still greets, above whatever the workflow says. See Answering with a workflow.
- Fixed — A field that names a variable to save into — Store Reply In on Send Chat
Message and Send SMS, Item Variable on a loop, the Variables rows on Invoke
Lambda, Integration, the Sharpen DB nodes, PortX and Slack — no longer resolves its own
contents. Picking a variable from the editor rather than typing its name used to write
$(name)into the field, which resolved to an empty name at run time: the value was saved nowhere, every later reference printed nothing, and no exit or error said so. Existing workflows are repaired without being re-saved — a$(name)or{{name}}already stored in one of these fields is read asname. The field itself is now a plain text box. - Changed — The chat widget editor's preview now runs a workflow's opening move too. A workflow target shows a Start chat button in place of the message box until it has run, so the preview shows what a visitor sees rather than a conversation only an author could have. It is a button, not automatic: a workflow preview is a real run, and picking one in the target list still costs nothing.
- Changed — Disconnect now ends a web chat as well as a phone call. In a chat it closes
the conversation and nothing wired after it runs; on a call it still hangs up and lets
subsequent nodes finish non-voice work. Reaching it from a chat used to take the node's
fallbackexit. - Added —
get_workflowandupdate_workflowon the MCP server.get_workflowreturns a workflow's settings and the steps of one version, reportingpublishedas its own field.update_workflowchanges the settings, the steps, or both; settings merge, a published version cannot be updated, and passingobserved_updated_atrefuses a write composed against a stale read instead of overwriting someone's editor save. See Building with AI. - Fixed —
build_workflow_draftcould not return a node graph for a workflow of more than one step, and rejected the exits a Time Control event or a Switch evaluation creates. Both now work, so an AI client can draft a real flow rather than a single step. - Added —
build_workflow_draftnow warns when a step names a prompt file, queue, or integration your organization does not have. A workflow copied from another organization keeps the original's IDs, which used to validate cleanly and then fail on a live call.
2026-09-09
- Added — Channels on an agent. An agent now declares whether it answers phone calls, website chat, or both, in the create dialog and on its Persona card. Both are on by default, so nothing changes for an agent that already exists. Switching one off hides that channel's settings in the editor rather than marking them Voice only, and a chat-only agent needs no voice: the voice fields aren't shown for one, and no save asks for them. See Channels.
- Changed — A chat widget can only be pointed at an agent whose published configuration
includes the
chatchannel. Saving one against a voice-only agent is refused withagent_not_chatand a message naming the agent as the thing to change. An agent with nothing published yet is still accepted. See Create a chat widget. - Added —
channelson the agent configuration API: an array ofvoiceandchat, defaulting to both, which must not be empty.slots.ttsis required only whilevoiceis present, so a chat-only draft publishes with no voice; a voice that is set is still validated on either channel.
2026-09-08
- Added — Tool calls in agent transcripts. What the agent did — looking something up, capturing keypad digits, transferring — now appears as a collapsed row in the transcript, in the place it happened, carrying how it turned out (Succeeded, Failed, Running, or No result) and, where the platform timed it, how long it took. Expand a row for the arguments the agent sent and, on a failure, the reason the tool gave. What a tool returned is never shown. Rows appear on the live Supervisor board for both calls and chats, on a finished call under Recent Calls, and on a preview call; a finished chat's transcript stays text-only. The board and Recent Calls are enabled per organization; a preview call always shows them. See What the agent did.
2026-09-03
- Added — Agents → Coaching, one page for the changes Tandem recommends to your agents' resources, each accepted or rejected in place. Suggested FAQs are its first source and have moved there from the knowledge-base page, so one list now covers every knowledge base rather than one panel per knowledge base. See Coaching.
2026-09-02
- Added — Contacts: one record per person your organization talks to, holding the phone numbers, email addresses, and ids they reach you on, a name, tags, and notes. You create every record yourself in this release — no call, text, or chat produces one or attaches itself to one. Enabled per organization. See Contacts.
- Added — Admin → Contact Attributes: define the fields every contact can hold beyond a name, each with a kind that decides what the service accepts. Enabled per organization with Contacts. See Attributes.
2026-09-01
-
Added — Versioning for voice agents, over the API. An agent's configuration can live on numbered versions under
/v1/agent-media/agents/{agentId}/versions: save up to 20 drafts, then publish the one you want live. The published version is the configuration every call runs, and it stays immutable until you publish a different one. A 21st version is rejected withversion_limit_reached; delete one you no longer need. Saving an agent's first version also retires that agent's configurationPUT(see the next entry). See List an agent's versions for the endpoints. -
Changed —
PUT /v1/agent-media/agents/{agentId}stops accepting a configuration once the agent holds any version, published or draft. From that point the only keys it takes arenameandsourceTemplateId; a body carrying anything else is rejected with409 config_put_retiredand nothing is saved. Save the configuration to a draft withPUT /v1/agent-media/agents/{agentId}/versions/{version}and publish it instead.Every agent created from this release is in that state from the moment it exists, because a create writes its configuration to a
0.1draft. Saving or publishing a version of an older agent puts that agent there too, as does Tandem's migration of the agents an organization already had, which runs one organization at a time. An integration that writes configurations should use the version endpoints unconditionally:publishedVersionis absent on an agent that holds drafts only, so branching on it does not tell you whether the agentPUTstill takes a configuration. -
Added — Versioning in the agent editor. A version number sits at the top of the configuration, Manage Versions lists an agent's versions and deletes the ones you no longer need, Publish moves the pointer, and Save as New Draft branches the version you're looking at. A published version opens read-only and readable — its Advanced groups are expanded and the list editors still open — so the live configuration can be inspected without being editable. See Versioning.
-
Changed — Every picker that attaches an agent to a caller — phone numbers, both chat-widget surfaces,
transfer_to_voice_agent, and the agent-kind tool target — marks an agent with no published version asnot published — can't answer callsand won't let you choose it. That label reads the agent's published version and nothing else, so until your organization is migrated it also appears on agents that predate versioning, which keep answering calls regardless. The AI Voice Agent workflow node's picker says nothing about publish state and still allows any selection. -
Changed — Creating a voice agent now saves its configuration as version
0.1, a draft, and publishes nothing: the editor opens a new agent editable, Save Configuration keeps revising that draft, and you publish when the agent should start answering. Until then it answers no calls. This applies toPOST /v1/agent-media/agentsand to instantiating an agent template. -
Changed —
POST /v1/agent-media/agentsno longer overwrites an existing agent. Supplying anagentIdthat already exists is rejected with409 create_upsert_retired, whatever versions that agent has. A create writes identity to the agent record and the configuration to a0.1draft, so repeating one over a live agent would take that agent's configuration off its record and publish nothing in its place, giving no sign it had gone. A create with noagentId, or with one that is genuinely new, is unaffected. To change an existing agent, write a draft withPUT /v1/agent-media/agents/{agentId}/versions/{version}and publish it. -
Added — Pricing on Admin › Billing. The page now shows what you are charged for — platform, AI usage, telephony and messaging, fair use, compliance pass-throughs, and what is included at no charge. Metered rates are read live, so they always match what your charges are priced against. See Billing.
-
Changed — Local call minutes, inbound and outbound, are now $0.015 per minute. Charges already recorded keep the amount they were charged — a rate change is never applied retroactively.
-
Changed — AI pricing is now published per voice minute and per digital conversation, with tokens charged only as an overage past a per-conversation ceiling. While that model is being rolled out, no per-token AI charge is applied. See Billing.
2026-08-28
- Added — Channels in Insights. Every conversation now records the medium it happened over — voice, web chat, SMS, MMS, or email — and each Insights page has a Channel filter. Conversations that ran no workflow, such as a web chat handled entirely by an agent, are counted and listed rather than omitted. Some SMS conversations previously counted as calls have been re-labeled. See Insights & Reporting.
- Changed — Suggested FAQs are collected from web chat as well as from calls. See Coaching.
2026-08-27
- Added — Goal, a single objective a voice agent works toward across a call, re-surfaced on a cadence you set in caller turns. Voice only. See Persona.
- Added — Chat widget: a visitor can reach their earlier conversations from a back arrow, expand the panel to full height, and the launcher stays on the page while the chat is open. See Chat Widget.
- Added — Chat widget branding: brand color, launcher position and icon, avatar, and a live preview that updates as you type.
- Added — Personal access tokens are accepted on the API. See Authentication.
- Changed — The Stripe billing email is editable and follows the organization email. See Billing.
2026-08-25
- Added — Turn detection on a voice agent: a smart turn model that predicts end-of-turn from how the caller sounded, as an alternative to silence timers. Also Words before interrupting, so a cough or an "mhm" no longer stops the agent. See Voice & Speech.
- Added — The Supervisor transcript reports the post-call caller-memory write, so you can see whether it saved. See Live Conversations.
2026-08-24
- Added — Live Conversations under Supervisor: every agent conversation in progress right now, across calls and website chats, with a live transcript you can read as it happens. See Live Conversations.
- Added — The chat widget: an embeddable script that puts one of your existing agents on your website. See Chat Widget.
- Added — Admin → Email Domains: verify a domain you own, configure sender addresses, and send email from a workflow or an agent with the Send Email node. See Email Domains.
- Added — Suggested FAQs: questions callers and visitors asked that the knowledge base couldn't answer, clustered and offered for you to answer. See Coaching.
- Added — Conversation history and model-retry controls on a voice agent's Brain card. See Brain.
- Added — A caller language recognition override, and per-provider voice character controls for Polly and ElevenLabs. See Voice & Speech.
- Added — Agent settings that do nothing in a chat are marked Voice only in the editor.
2026-08-20
- Added —
/security-review: ask Tandy to review a voice agent's configuration for risks a caller could exploit, and apply the recommended settings from one confirmation card. See Security Review. - Added — Admin → Billing: a prepaid balance, a transaction history, and card top-ups through Stripe. See Billing.
- Added — Agent tools: a voice agent can consult another of your agents as a tool. See Tools.
2026-08-19
- Added — Insights reads live reporting data: Usage Reports, Call Logs with an execution replay, and Voice Trends. See Insights & Reporting.
- Added — Access Tokens, in the user menu: create a personal access token for the API. See Authentication.
2026-08-17
- Added — The Conversation card on a voice agent: idle behavior, call-duration limits with a spoken warning, and failure-handling tuning. See Conversation.
- Added — Nested object parameters on an integration tool, so a tool can build a structured request body. See Tools.
2026-08-14
- Added — The read-back-values platform skill, which has the agent speak codes, numbers, and dates digit by digit. See Skills.
- Added — A Timezone picker on the current-time built-in tool. See Built-in Tools.
2026-08-13
- Added — Post-call analysis: a second pass over a finished call's transcript that extracts sentiment, an outcome, a summary, and any fields you define, with a Recent Calls panel to read the results. See Post-Call Analysis.
- Added — Transfer to another voice agent as a built-in tool, with a carry-over choice and a hop budget. See Built-in Tools.
- Added — Secret references in an integration tool's headers, body, and request path, resolved as the request leaves and restricted to organization administrators. See Secrets & Variables.
2026-08-12
- Added — Agent templates: start an agent from a curated or organization template, or save one of your own agents as one. See Templates.
- Added — Transfer to an outside number as a built-in tool, restricted to destinations you name. See Built-in Tools.
2026-08-11
- Added — Skills: named procedures you switch on per agent, with three that ship with Tandem. See Skills.
2026-08-07
- Added — Admin → Manage Users: invite people, change roles, disable an account, and remove someone who has left. Tandy can draft an invitation or a removal for you to confirm. See Manage Users.
- Added — The Slack integration: post messages into your workspace from a workflow, using your own Slack app. See Slack.
2026-08-05
- Added — Self-service sign-up. You can create an account and your own organization from the sign-in page without an invitation. See Creating an Account.
- Added — Admin → Organization, where an admin can rename the organization, change the address we send account notices to, and find the organization ID to quote to support. See Organization.