Changelog
Follow up on the latest improvements and updates.
RSS
new
Phone System
Pre-Built A2P Campaign (Widget-First) Registration Flow
We’re launching a Pre-Built A2P Campaign (Widget-First) registration experience designed to reduce carrier rejections, eliminate manual compliance writing and effort, and ensure faster A2P submissions while also reducing rejection risk.
✅ What’s New
⭐ Pre-Built Campaign (Recommended Path)
Users can now select : Pre-built campaign (Chat Widget) during A2P registration right as they are about to start Campaign registration in the Standard A2P flow.
This flow:
- Enforces Chat Widget as the only opt-in method
- Automatically generates compliant consent language
- Locks required compliance elements
- Prevents financial/marketing misclassification
- Reduces rejection risk

🧭 Streamlined Messaging Use Case Selection
Step 1: Message Type
Choose one:
- Marketing / Promotional
- Informational / Non-Marketing

Step 2: Filtered Use Case Dropdown
If Marketing is selected only “Marketing” is available and if Informational is selected then,
Select from:
- 2FA
- Account Notification
- Customer Care
- Delivery Notification
- Fraud Alert
- Higher education
- Polling and Voting
- Public Service Announcement
- Security Alert
🔒 Financial + Marketing Conflict Protection
- If a user selects "Marketing / Promotional" AND Financial services / loan arrangement, The flow is blocked.
- Users must switch to Informational to proceed. This prevents high-risk carrier rejections.
🔞 Automatic Age Gating (Carrier-Compliant)
Age gating is now automatically enforced when “Age gated content” is selected OR “Financial services / loan arrangement” is selected
When triggered:
- A mandatory Date of Birth (DOB) field appears in the widget
- Cannot be removed
- Required before submission
- If neither condition applies then DOB field does not appear
🧩 Auto-Generated Compliance Widget
The system now automatically:
- Creates a compliant Chat Widget
- Injects business name into disclosure
- Applies locked disclosure language
- Adds STOP/HELP language
- Adds data rate + frequency disclosure
- Attaches widget to campaign
- Generates embed code

Users cannot:
- Edit disclosure text
- Remove required fields
- Add consent checkboxes
- Edit any compliance fields
- Select alternative opt-in methods
🧱 Final Widget Structure
Required (Locked) :
- Phone number (mandatory)
- Disclosure block
- STOP/HELP language
- Data rate disclosure
- Frequency disclosure
Conditional:
Date of Birth (mandatory when triggered)
Optional :
- Name
- Message
- UI styling (colors + header text only)
Removed:
- Email field
- Consent checkbox
- Custom compliance fields
- Editable disclosure text
- Opt-in method selector
👀 Read-Only Widget Preview
Users can preview:
- Full widget
- Disclosure placement
- DOB field (if triggered)
- Preview is not editable.

🔐 Locked Final Consent Review
Before submission:
- All fields auto-filled
- Non-editable
- Sample messages generated
- Opt-in method defined
- Website compliance checklist confirmation required

Who Is Impacted?
- Agencies or sub-accounts submitting new A2P campaigns
- Users launching marketing-only campaigns
- Users launching informational-only campaigns
- Campaigns involving financial or age-gated content
Benefits of This Update:
- Reduced A2P rejection rates
- Prevention of financial/marketing misclassification
- Automatic age-gating compliance
- Stronger carrier and CTIA alignment
IMPORTANT
: This Campaign registration flow is not available for "mixed use-case" and "Sole-prop" campaigns.new
improved
Automations
AI Powered Field Tooltips
What's New
Workflow action fields now include AI powered tooltips that provide contextual explanations directly within the builder. Building on the existing "Learn More" AI capability available on actions and triggers, this extends AI assisted guidance to the individual field level.
When hovering over the ℹ️ icon next to a field, users see a brief description of the field's purpose along with an "Explain" call-to-action. Clicking "Explain" opens the AI assistant with a detailed, conversational explanation of that field — including how it impacts the workflow. Users can ask follow-up questions and clarify doubts without leaving the builder.

Current Availability
This feature is currently in experiment mode, live on two fields within Advanced Settings for the
Manual Action to SMS
and Manual Action to Call
Actions. Results from this test will determine broader rollout.What's Next
Based on experiment outcomes, AI powered tooltips will expand to all fields across all actions and triggers — making the workflow builder more self explanatory and reducing the learning curve for new users.
Why This Matters
Users no longer need to leave the builder to search documentation or guess what a setting does. Combined with the existing "Learn More" capability on actions and triggers, field-level AI tooltips provide instant, contextual clarity right where it's needed.
What’s new?
IVR Connect Call now exposes new variables: 'Answered By User ID', 'Answered By Device', and 'Answered By Phone Number'.
You can use Answered By User ID inside the Assign User action to automatically assign the contact to the person who picked up the call. These variables are also available in the custom variable picker, so they can be referenced in other workflow actions like Notes, SMS, Email, and more.
How it works
When a call reaches your IVR and is routed through Connect Call, the system captures who answered. In workflows, you can reference these values dynamically - most commonly passing Answered By User ID into Assign User to set ownership, or inserting the other variables into messages and notes.
How to use it
- Add an Assign User action after your IVR → Connect Call step.
- In the Users field, switch to Dynamic and select Connect Call → Answered By User ID.
- Save and publish the workflow.
Why we built it
Previously, contact ownership had to be set manually or assigned to a fixed user. Now, ownership automatically matches the person who actually spoke to the lead - keeping follow-ups, tasks, and reporting accurate.
Use Case example
A lead calls your IVR and the call is routed through Connect Call. John answers the phone. The workflow uses Answered By User ID from the Connect Call step, and the contact is automatically assigned to John.
Additional Notes
- Works for both single or multiple users configured in Connect Call.
- Assignment happens only if the call is successfully answered.
- Uses the first connected user as the owner.
- Assign User will not work if the Connect Call routes to a Custom Phone Number (no associated user ID).
- To assign dynamically, you must use Answered By User ID (not device or phone number).
Preview

new
Automations
Connect Call (IVR) Action: Now Supports Call Whisper
What’s new?
The Connect Call (IVR) action now supports an optional Call Whisper message. When a call is transferred to another number, you can play a private “heads-up” message to the person who answers before the caller is connected.
How it works
If Add Whisper Message is toggled on, the system plays your configured message to the call recipient first, then connects the caller. You can control the message text, voice, and how many times it repeats (loops).
How to use it
- In your workflow, open Connect Call (IVR).
- Toggle Add Whisper Message on and enter the message settings.
- Save the action - your recipient will hear the whisper before the call connects.
Why we built it
Transferred calls often arrive with zero context. Call Whisper helps your team answer confidently by sharing key details up front - without the caller hearing it.
Use case example
- The whisper message can say, “You’ve got a call from {{contact.name}} about their appointment request,” so the recipient knows who’s calling and why before they answer.
Additional Notes
- Whisper is optional and only plays when enabled.
- The whisper is played to the recipient only, before the call connects.
- You can configure number of loops to repeat the message.
- Currently, whisper messages support English only.
- Keep whisper messages short so recipients can hear the context quickly before pickup.
Preview

fixed
Automations
Fixed: If/Else branching for UTM Campaign (Last Attribution)
Overview
Users had reported inconsistent behavior - the custom value picker would fall back to the campaign variable when UTM Campaign (Last Attribution) was empty, but If/Else conditions would not. This caused workflows to branch unexpectedly.
What’s new
If/Else conditions now correctly apply the same fallback logic as the custom value picker for UTM Campaign (Last Attribution).
What’s changed
If UTM Campaign (Last Attribution) is empty, If/Else conditions will now automatically use the campaign variable as a fallback, ensuring consistent behavior across both areas.
new
Automations
Company Variables Now Available in Workflows
What’s new?
You can now use company-based variables inside contact based workflows. In addition to contact fields, you can reference company details like company name, phone, email, website, address, and other company fields. These are available in both the Custom Value picker and If/Else branches.
How it works
When building a workflow, company fields now appear alongside contact fields in the variable picker. If a contact is associated with a company, the workflow can dynamically pull that company’s details into messages, notes, and conditions, or use them to drive If/Else logic.
How to use it
- Open a workflow and add or edit an action or If/Else branch.
- Select the Custom Value picker and choose a Company field.
- Insert it into your message, note, or branch condition.
Why we built it
Many users manage contacts tied to businesses. This update removes the need for workarounds and manual mapping, making it easier to personalize communication and automate decisions based on company-level data.
Use Cases
- Add the Company Name variable (from the contact’s associated company record) into an email body to personalize outreach to a business contact.
- Create an If/Else branch that checks the Company Address (City) field and routes contacts differently based on their company’s location.
Additional Notes
- Company variables only compute if the contact is associated with a company. If not, the value will be blank.
- Available in both the Custom Value picker and If/Else conditions.
Preview


new
improved
Automations
Trigger Descriptions in Workflow Builder
What's New
Every workflow trigger now includes a built-in, human-readable description that explains what the trigger does and when it fires. Descriptions are visible directly within the Workflow Builder when browsing, selecting, or editing triggers.
How It Works
Open the Workflow Builder and click to add or edit a trigger. Each available trigger now displays a clear description of its function, allowing you to select the right trigger with confidence without needing to reference external documentation.
Why This Matters
Trigger descriptions reduce guesswork during workflow setup, making it easier for both new and experienced users to identify the correct trigger quickly and build automations faster.

new
Payments
Add & Track Product Cost Price and Margin
What's New?
Businesses can now define a Cost Price and Margin for every product price or variant — giving you a clear, built-in way to track profitability without relying on spreadsheets or external tools.
Once configured, cost data flows into your transaction exports, invoices, and calendars — so you always know what you're making on every sale.
How it works
- Add cost price and margin under any product price or variant via a new "Add Margin" toggle (off by default — existing products are unaffected).
- Choose between Amount or Percentage mode for margin — enter either field and the other calculates automatically based on the selling price.
- Margin % above 100% is supported and indicates cost exceeds selling price.
- For invoices and calendars where prices are manually overridden, cost price is always pulled from the original product — never recalculated on the fly.
- A new Line Item Cost Price column is now available in the Transactions CSV export for profitability analysis at the transaction level.
Where Can I Find This?
- Go to Payments → Products → Create or Edit a Product → Pricing section and check "Add Margin" to configure cost price and margin for any price or variant.
- For exports, go to Payments → Transactions → Export CSV — the new Line Item Cost Price column will appear automatically when cost price has been defined for a product.
What's Next?
- Bulk cost price editing across products
- Margin data in additional export types
- Cost Price and Margin modifications and consumption on Invoices
Visuals






improved
Phone System
Multi-Lingual Transcription for Voice Calls (via Labs)
3rd of March, 2026
Release type:
Labs (opt-in beta)Area:
Voice: Call Transcription---
What's changing
We've upgraded the transcription engine powering voice call transcriptions. This brings multi-lingual transcription and improved accuracy for English too, without any change to your existing pricing or rebilling setup.
---
What's new
Multi-language transcription
Transcriptions now support 10 languages: English, Spanish, French, German, Hindi, Russian, Portuguese, Japanese, Italian, and Dutch.
Automatic language detection
No language selection required. The spoken language is detected automatically.
Mid-call language switching
If the conversation switches languages during a call, transcription continues to work correctly. No manual intervention needed.
Timestamps
Each transcription includes timestamps for easier reference and review.
---
What stays the same
- Transcription pricing for your sub-accounts is unchanged
- Rebilling multipliers continue to work as before
- Transcriptions appear in the same place in the UI
- Transcriptions can be used in workflows using the existing trigger
---
How to enable
This feature is available as a
Labs
. To enable:- Go to Agency Settings → Labs
- Click on Activate FeatureforMulti Lingual Transcription

- Toggle on VisiblityandEnablefor the sub-accounts where you want to use it. UseSelect Allin case you want to enable it for all sub-accounts andBulk Actionsto Enable

- New calls will use the upgraded engine automatically

Note: Existing call transcriptions are not retroactively updated.
🧭 Overview
We’ve significantly improved how
Booking Periods
work in Rentals to make date and time behavior clearer, more intuitive, and easier to configure.With this update, businesses can now
enable or disable time selection at the listing level
, giving them full control over whether customers choose dates only or dates and times — without relying on hidden global settings.Previously, booking behavior (such as time selection, duration calculation, and multi-day pricing) could depend on global setting configurations, leading to accidental multi-day charges and confusion around rental start/end times.
Booking logic is now explicit, visible, and self-contained within each listing — so businesses can clearly understand how bookings are calculated and charged.
🚀 What’s New
✅ Clear Booking Period Options
You now see three clearly defined
Booking Period modes
:- Date & Time Selector
- Date Selector
- Fixed Durations
Each mode now has visible, predictable behavior — with no hidden dependencies.
🕒 Date & Time Selector
- Always shows date and time pickers in the booking widget
- Ideal for hourly rentals or bookings where customers must choose a start time and end time
- Behavior is no longer affected by hidden global settings

📅 Date Selector
- Customers select start and end dates only
- Default Rental Start Time and Rental End Timeare always visible in listing settings
- Default times (e.g., 3:00 PM start / 11:00 AM end) are clearly applied to calculate duration
This is perfect for vacation rentals, overnight stays, and date-based pricing models.

⏱️ Fixed Durations
For listings with predefined booking durations:
- Optionally allow customers to select a start time
- If time selection is disabled, the default Rental Start Timeis applied automatically
- End time is automatically calculated based on the selected duration
- Monthly bookings roll over to the next calendar month with smart date handling

🔒 Smart Compatibility Rules
To prevent unsupported configurations:
- When Booking Period = Date Selector, hourly pricing is disabled
- When Booking Unit = Hour, Date Selector is disabled
This ensures only valid combinations can be selected.
⚙️ Improved Discoverability
- “Disable Time Selector” behavior is now surfaced clearly within the listing directly and has beenremoved from Global Settings
- Booking logic is now self-contained within each listing
🔄 Migration for Existing Listings
To ensure a smooth transition:
- Existing listings were mapped to the correct Booking Period mode
- Default Rental Start/End times were populated where required
🎯 Why This Matters
- Eliminates accidental multi-day charges
- Makes rental start/end times visible and predictable
- Gives businesses control to enable time selection for some listings and disable for others
- Improves clarity for both admins and customers
- Increases adoption for vacation rentals and flexible pricing models
- This update brings Rentals one step closer to being fully intuitive and self-explanatory
Load More
→