Changelog

Follow up on the latest improvements and updates.

RSS

What’s New?
Gift Card communications now support backend translations, ensuring customers receive localized communications based on the selected locale.
Key enhancements include:
  1. Localized Communications:
    Gift card purchase confirmations, recipient emails, and SMS notifications are now translated based on the selected locale.
  2. Communication Preview:
    Previews in the Gift Card send flow now reflect locale changes across all supported delivery methods.
  3. Email Previews:
    Both dummy and actual gift card data are now displayed with translated content in email previews.
Key Points to Note:
  • Translations are handled automatically based on the selected locale.
  • Both communication previews and customer-facing communications reflect the selected language.
Images:
image
image
image
image
A new marketing template type that puts a live countdown clock inside the message itself, drawn by WhatsApp and ticking down in your customer's chat. The discount code sits right beneath it, ready to copy with a single tap. You set the expiry fresh on every send, so one approved template runs campaign after campaign.
> ⏳ Your customer watches the deadline shrink in real time instead of reading the words "offer ends soon." The countdown is rendered by WhatsApp, not baked into an image you have to redo every campaign.
image
What's new
⏳ A new limited time offer template type
  • Built for marketing deadlines:
    Create it under the Marketing category with an offer heading, image header, and body with variables, all in the template builder with live phone preview.
⏰ A countdown WhatsApp draws for you
  • It actually ticks:
    The clock counts down inside the customer's chat until the expiry you set, and turns red in the final hour. This is native WhatsApp rendering, so the urgency is visible rather than claimed in your copy.
🎟️ One tap to copy, one tap to buy
  • Copy code and URL buttons:
    The discount code sits under the clock and copies with a single tap, with a URL button beside it going straight to your offer. Nothing for the customer to memorize or retype between seeing the deal and using it.
  • Both buttons are always present:
    Meta requires both on this template type, so they cannot be removed.
image
🔄 Set the expiry when you send, not when you build
  • One template, every campaign:
    The template defines the structure and the deadline is chosen at send time. You are not creating and submitting a new template for every promotion, which means no waiting on Meta approval between campaigns.
📤 Send from everywhere you already send
  • Conversations, bulk actions, workflows, and calendar sends
    all support it.
  • The AI template writer can draft one for you
    , including the offer heading, expiry, offer code, and image.
What your clients can do with it
  • A salon
    fills Friday's empty chairs with a code that expires at noon
  • An online store
    recovers abandoned carts with a discount the customer can see running out
  • A gym
    pushes a joining offer before the month closes
  • A travel agency
    moves unsold seats against a deadline the customer watches shrink
image
How to use it
  1. Go to
    Settings → WhatsApp → Templates → Create template
    .
  2. Set
    Category
    to
    Marketing
    and
    Type
    to
    Limited time offer
    .
  3. Add your offer heading, image header, body, discount code, and URL.
  4. Submit for Meta approval as normal.
  5. When you send, choose the expiry for that specific campaign.
One thing to watch:
if you send with an expiry that has already passed, Meta still accepts the message and the chat shows the offer as already expired. Double-check the deadline before a bulk send.
image
Why this matters for your business
Deadline-driven offers have always been awkward on messaging. You either wrote "ends soon" and hoped it landed, or you baked a date into an image and rebuilt the creative for every campaign. Neither approach shows the customer a deadline they can actually watch, and both put a Meta approval cycle between you and your next promotion.
image
  • Run promotion after promotion from one approved template
    , changing only the deadline per send
  • Remove the gap between interest and purchase
    , since the code copies in one tap and the link is right there
  • Skip the approval queue between campaigns
    , because the template never changes
  • Give your clients a campaign type their competitors on SMS and email cannot replicate
    in the same native way
Head to Settings → WhatsApp → Templates and build your first limited time offer.
Creating and editing WhatsApp templates now happens in a completely rebuilt builder with a live phone preview, so what you see while you author is what your contact actually receives. And media headers no longer need a hard-coded URL: point them at a dynamic value and the right image, video, or document resolves per contact at send time.
image
> 📎 Send every customer their own invoice, ticket, or personalized image from a single template. No more cloning a template for every asset and waiting on Meta to approve each copy.
What's new
🎨 A rebuilt create and edit experience
  • One modern layout:
    Category, type, naming, body, media, buttons, and variables now live together in a single redesigned builder, matching the templates and folders experience you already use for managing your library.
  • Consistent everywhere you author:
    AI template generation now runs through the same builder end to end, and the WhatsApp template builder opened from Reputation uses it too. One interface to learn, not three.
image
📱 Live phone preview while you build
  • See the real thing as you type:
    The preview updates as you edit your header, body, media, and buttons, showing exactly how the message lands on WhatsApp. Catching a layout problem in the builder costs you seconds. Catching it after Meta approval costs you another approval cycle.
🔗 Dynamic media URLs, the big one
  • Media that changes per contact:
    Media header fields now accept custom fields and dynamic values, not just one static public URL. At send time the value resolves for that specific contact and Meta receives a concrete URL for that message.
  • One template instead of many:
    Previously, a different image or document meant a different template, and every new template goes to Meta for approval. Now a single approved template serves every contact's unique asset.
  • Works across your send surfaces:
    Workflows and automations, conversations, bulk actions, calendar appointments, reputation review requests, and missed call text back all support dynamic media headers.
🖼️ Personalized images in bulk, the use case worth stealing
  • Every contact gets their own image, from one send:
    Pair dynamic media with an image personalization service like NiftyImages and a single bulk action renders a unique image for every recipient. Build the design once with a name placeholder, and let the URL resolve per contact at send time.
  • What your contacts actually see:
    Shaun opens WhatsApp to an image reading "Here's a special offer for you, Shaun." Varun gets the same design reading "Here's a special offer for you, Varun." Robin gets his. One template, one bulk send, thousands of individually rendered images.
  • Beyond names:
    The same approach works for personalized discount codes, event tickets with the attendee's seat, course certificates, renewal dates, or a product image matched to what that contact last bought.
image
✅ Failures you can actually diagnose
  • No silent wrong media:
    A dynamic value that resolves to a valid public URL sends normally. One that resolves to something invalid or empty fails clearly, so you never discover that the wrong document went out by hearing it from your client.
Where to find it
  • Template builder:
    Sub-account →
    Settings → WhatsApp → Templates → Create
    or
    Edit
  • Reputation:
    Reputation → Settings → WhatsApp Requests → Open WhatsApp Template Builder
  • Missed call text back:
    Settings → Phone System → Voice → Voicemail & Missed Call TextBack → Missed Call Text Back → Customize
image
How to use dynamic media
For per-contact documents (invoices, contracts, IDs):
  1. Store a publicly reachable HTTPS URL on a contact custom field.
  2. In your template's media or header field, map to that custom field instead of pasting a fixed URL.
  3. Send from a workflow, bulk action, or conversation. Each contact receives their own file.
For personalized images at scale:
  1. Create your image design in a service like NiftyImages, with a placeholder for the contact's name or any other detail.
  2. Use the personalized image URL as your media header value, with the contact's detail supplied dynamically.
  3. Run a bulk action. Every contact receives an image rendered just for them.
One requirement worth noting:
the resolved value must be a publicly reachable URL that Meta can download. Private Drive links, URLs behind a login, and empty fields will fail.
image
Why this matters for your business
Personalized media used to carry a hidden tax. Every variation meant another template, and every template means another round of Meta approval before you can send anything. That made per-customer invoices, tickets, certificates, and personalized campaign images impractical for most agencies, so they either skipped them or built fragile workarounds.
image
  • Run personalized image campaigns at bulk scale
    instead of sending the same flat creative to everyone
  • Send genuinely personalized documents
    without multiplying your template library
  • Skip the approval queue
    for asset changes, since the approved template stays the same and only the resolved URL varies
  • Keep automations stable
    , because workflows reference a dynamic value rather than a URL you hand-edit after every clone
  • Catch layout mistakes before Meta sees them
    , with a preview that matches the real message
Open Settings → WhatsApp → Templates, build one, and try a personalized image on your next bulk send.
AI Studio checkouts just got more flexible. Pick exactly which fields buyers fill in, capture leads before they pay with a two-step checkout, and show a full order summary once payment goes through.
Choose your checkout fields
Show, hide or require the phone number and each billing address field (street, city, state, ZIP, country). Name and email are always required.
Try it:
"Make phone required and hide the billing address"
image
Two-step checkout
Capture the lead first and take the payment second, just like the Two Step Order form in Funnels.
  • Step 1
    saves the buyer as a CRM contact, so people who don't complete payment are still leads you can follow up with.
  • Step 2
    collects the payment.
Try it:
"Make it a two-step checkout"
image
Heads up:
new leads fire the
Contact Created
trigger, not Order Form Submission. Check that your workflows listen for the right one.
Order details after payment
The confirmation screen now shows the order ID, items, taxes and total paid, plus the next charge for subscriptions. Prefer your own page? Send buyers to a custom thank-you page that displays their real order.
Try it:
"Send buyers to my own thank-you page after payment"
image
Availability
Projects already using Payments get all of this on their next prompt. No need to reconnect.
Connect a GitHub account to any AI Studio project and keep your code in sync both ways. AI Studio creates a private repository for the project, pushes every version you save, and pulls back every commit made outside it. Work in any editor or coding agent (Claude Code, Codex, Cursor, Copilot, Gemini CLI) and your changes land back in the project with a fresh preview.
What's new
  • Connect GitHub
    : In a project, go to More → Git and connect a personal account or an organization. Share it with the whole sub-account or keep it to yourself.
git-entry
add-connection
  • A repository, created for you
    : A private repo named after your project is created with the first push already done. Reconnecting a project reuses its previous repo and never force-pushes.
  • Automatic two-way sync
    : Every version you save (AI prompts, code edits, visual edits, restores) is pushed to GitHub, and new commits on your connected branch are pulled back automatically. Both can be turned off, and Push now / Pull now are always available.
connected-repo
  • Choose your branch
    : Starts on
    main
    . Switch anytime, including to a new branch that gets created on the next push.
  • Fresh preview after a pull
    : A new preview builds in the background. When it's ready, click
    Update preview
    , so the page never reloads under you. If the build fails, use
    Retry build
    or
    Try to fix
    .
  • Diverged branches
    : If GitHub and AI Studio both have new commits, choose
    Force push
    (AI Studio wins) or
    New branch
    (keep both).
  • Sync History
    : See total syncs, success rate, the push/pull split and every commit that moved, with a link to it on GitHub. Failures are explained in plain language.
sync-history
  • Safe by default
    : Pushes are scanned for secrets (AWS, GitHub, Stripe and OpenAI keys, private keys) and blocked if found. Images, fonts and other binary files are preserved on every sync.
New permission: Manage Git & download code
A new AI Studio permission controls Git access and code downloads. It's
on by default for every role
, so nobody loses access. Agency admins can turn it off per user in
Settings → Team → Permissions → AI Studio
. Users without it won't see the Git tab or Download options, but can still build, edit and preview as usual.
Good to know
  • Works with React (Vite) and TanStack Start projects.
  • Commits made by AI Studio appear as "GHL AI Studio", not your GitHub identity.
  • Only the connected branch is synced.
  • Projects that don't connect GitHub see no change.
You can now add native chat widgets to your AI Studio apps — built and styled by AI Studio to match your site, instead of a generic chat bubble. Just ask AI Studio to "add a live chat", and it builds a real HighLevel chat widget into your app.
Chat widgets in AI Studio run on HighLevel's chat widget, so the conversations, contacts and widget settings are the ones you already use in your HighLevel account. There's nothing extra to set up.
What's New
AI Studio adds the chat for you
  • Ask AI Studio for a chat and it shows a card to create the widget:
    Live Chat
    , or
    Email Chat
    for visitors who leave a message and get a reply by email.
  • The widget is created in your account, named after your project, and wired into your app.
  • For a new chat, AI Studio asks a few quick design questions (greeting, placement, tone), then builds it.
Ask AI Studio to add a chat widget
AI Studio asks a few quick design questions
Designed to match your site
  • The chat is built into your app's own code, so it uses your site's colors, fonts and layout.
  • Change its look the way you change anything else: ask AI Studio, or edit it in code.
  • A project can have more than one widget — for example, live chat on every page plus a separate after-hours chat.
Chat widget styled to match the site
Live conversation in the chat widget
The real HighLevel chat underneath
  • Built-in security:
    Visitor sessions use secure tokens that never touch your app's code, and a captcha appears automatically when the chat suspects a bot.
  • Spam & abuse protection:
    Rate limits and your widget's spam settings apply to every message.
  • Attachments:
    Visitors can share files in live chat, within the widget's supported file types and size limits.
  • Conversation history:
    Returning visitors pick up where they left off, and older messages load as they scroll.
  • Delivery status:
    Messages show as sending, sent or failed, and failed messages can be retried.
  • Business rules:
    Business hours, out-of-hours messages, inactivity timeouts, chat ratings and chat-ended messages follow your widget settings.
  • Conversations:
    Every message lands in HighLevel Conversations, just like the standard widget.
Chat widget conversation in HighLevel Conversations
  • Your wording:
    AI Studio can set the welcome message and feedback lines when you ask — e.g. "greet visitors with: Hello, how can we help?"
Chat widget analytics
Go to
More → Analytics → Chat Widgets
to see the leads your project's chat widgets bring in.
  • At a glance:
    Chat loads, opens, open rate, and visitor feedback and satisfaction from chat ratings.
  • Every lead in one table:
    Contact, email, phone, chat type, the page the chat started on, and which widget it came from.
  • Flexible views:
    Filter by widget and date range, choose which columns to show, and select leads to download.
Chat widget leads analytics
Chat widget settings, inside AI Studio
Go to
More → Chat Widgets
to see your project's widgets. Open one to manage it without leaving AI Studio:
  • Widget name:
    Rename it right there.
  • Messaging:
    The welcome and acknowledgement lines visitors see in the conversation.
  • Contact form:
    The details visitors give before their first message.
  • Compliance notice & consent:
    Legal notices and opt-in consent for privacy, marketing, SMS and HIPAA needs.
  • Spam protection:
    Suspicious leads are kept for review and tagged, with optional DND on SMS, email or both.
  • Business hours (Live Chat):
    When live chat is open. Outside those hours, visitors see your offline message instead.
  • No widget yet?
    The
    Add a chat widget
    button asks AI Studio to create one for you.
Chat Widgets tab in AI Studio
Availability
  • Live Chat and Email Chat are supported in both TanStack Start and React projects.
  • Voice chat, WhatsApp, Facebook Messenger and Instagram chat widgets aren't supported in AI Studio yet.
What’s New
You can now update feature access for many sub-accounts in one go. Select the sub-accounts you want on the Sub-Accounts page and click Update features. Choose the features you want to change, then pick whether each one should be enabled or disabled. When you apply the changes, they’re queued and processed for you.
How to use it:
  • Select sub-accounts on the Sub-Accounts listing page.
  • Click Update features.
  • Choose the features you want to change, then click Next.
  • For each feature, choose Enable or Disable.
  • Click Apply changes.
You can search for features, select whole groups at once, and use Enable all or Disable all to speed things up. You can also remove a feature from the list before applying.
Why It Matters
You no longer need to open each sub-account to change its features. Rolling out a new feature, restricting access, or standardizing setups across many sub-accounts now takes a few clicks, so you spend less time on repetitive admin.
Notes
  • Changes take effect in about 2–5 minutes after you apply them.
  • You can follow the status of every request in Bulk Actions History.
Screenshot 2026-10-14 at 1
Screenshot 2026-10-14 at 1
Screenshot 2026-10-14 at 1
Screenshot 2026-10-14 at 1
Overview
You can now automatically add Internal Comments to conversations using Workflows. Until now, teams had to manually add internal comments to share context, provide instructions, or keep other team members informed. With this workflow action, you can automate internal comments based on specific events, ensuring important information is captured directly in the conversation without manual effort.
What’s New?
We've introduced a new Add Internal Comment workflow action that lets you automatically post internal comments to conversations when a workflow runs. You can use this to share important context, provide follow-up instructions, or notify specific team members by @mentioning users directly in the comment.
For example, when a high-priority lead enters a workflow, you can automatically add an internal comment mentioning the assigned team member with instructions for the next steps. These comments appear directly in the conversation history, keeping internal communication and customer context in one place without sending anything to the customer.
image
How to Use
  • Go to Automation → Workflows.
  • Create a new workflow or open an existing one.
  • Add the Internal Comment action.
image
  • Enter your comment and @mention team members as needed.
  • Save and publish the workflow.
Why It Matters
This helps teams automate internal communication, keep everyone informed, and ensure important customer context reaches the right people at the right time.
We’re launching a Schema markup dashboard at the website and funnel level, under the new SEO & AEO tab. User no longer need to open each page in the builder to check or fix its schema. From one screen, user can:
  • See overall schema health
    . The Schema coverage card rates your site as Needs work, Getting there, Good, or Excellent, with counts for Up to date, Might be outdated, and No schema.
  • Check every page at a glance
    . Each page shows its schema types, its status (Up to date / Might be outdated / No schema / Unpublished / Unsaved), and when it was last updated.
  • Generate schema with AI, one page or many
    . Select pages and click Generate schema. Progress shows live, and results appear for your review before anything goes live.
  • Add or edit schema manually
    . Click + Add schema for pages with none, or click any schema tag to open the editor.
  • Review, then publish
    . Generated or edited schema stays Unsaved until you click Save and publish. You can also Discard it.
  • Find what needs fixing
    . Search by page name or path, and filter by schema status.
  • Spot stale schema
    . Pages edited and republished 2 or more times since their schema was created are flagged Might be outdated.
Why this matters?
Accurate, current schema makes your pages eligible for Google rich results and helps AI answer engines understand and cite your business. Until now, keeping schema current meant going through the builder one page at a time, so most sites fell out of date. This dashboard turns that into a quick check you can act on in bulk.
Impact on existing users
  • No data loss and no action required.
  • Every website and funnel now has an SEO & AEO tab. Any existing schema appears there automatically.
  • Pages without schema are flagged No schema, so user can fix them in bulk.
  • Schema editing in the page builder still works exactly as before. Both places stay in sync.
  • Running Generate schema on a page that already has schema replaces it entirely. Review before Save and publish click.
How to use
  1. Go to Sites → Websites/Funnels → select one → SEO & AEO.
  2. Check the Schema coverage card, and filter by No schema or Might be outdated.
  3. Select pages and click Generate schema, or use + Add schema / click a tag to edit manually.
  4. Review the results, then click Save and publish.
Sample screens
Screenshot 2026-10-12 at 5
Screen 1: SEO & AEO - Schema home screen 1
Screenshot 2026-10-12 at 5
Screen 2: SEO & AEO - Schema home screen 2
Screenshot 2026-10-12 at 5
Screen 3: SEO & AEO - Select page For Schema generation
Screenshot 2026-10-12 at 5
Screen 4: SEO & AEO - Schema generation progress
Screenshot 2026-10-12 at 5
Screen 5: SEO & AEO - Schema generated using AI
Screenshot 2026-10-12 at 5
Screen 6: SEO & AEO - Schema edit
InitiateCheckout now fires when a buyer
reaches checkout page
, not when they submit payment. AddPaymentInfo now also sends full order and customer details to Meta. Together, these changes give you an accurate picture of checkout drop-off and give Meta better signals to optimise your campaigns.
This applies to funnels, websites and stores that have the Meta Pixel set up with the InitiateCheckout event enabled.
🆕
What's New
  • Smarter InitiateCheckout timing
    : The event now fires at the moment the buyer starts checking out:
  1. When the page loads on store checkout pages.
  2. When the page loads on any page where you added InitiateCheckout at the page level.
  3. On the buyer's first click, tap or keystroke in an order form everywhere else. This covers one-step, two-step and popup order forms, plus the new order form.
  • Page-level control:
    Adding InitiateCheckout at the page level makes it fire as soon as that page loads. Adding it at the funnel, website or webinar level makes it fire on the buyer's first interaction with the order form.
  • Protection against duplicates and false triggers
    : InitiateCheckout fires at most once per page visit, even when a page has several order forms or more than one trigger is configured. Browser autofill, password managers and fields that are focused automatically on load don't trigger it.
  • Abandoned-cart recovery support:
    When a buyer comes back through an abandoned-cart link, the event waits for their saved cart to load, so it includes the cart value and products.
  • Express wallet coverage:
    Buyers who go straight to Apple Pay etc without touching the form are still counted. For them, InitiateCheckout fires when payment starts.
  • Richer AddPaymentInfo data
    : AddPaymentInfo now includes order value, currency, product IDs, and hashed customer details (email, phone, name, external ID) when they're available.
💡
Why It Matters
  • See real checkout drop-off:
    InitiateCheckout and AddPaymentInfo used to count the same buyers, so the step between "started checkout" and "entered payment" showed nothing. You can now see how many buyers reach checkout but leave before paying.
  • Better ad optimisation
    : Meta can now optimise and build audiences around buyers who show checkout intent, including those who don't complete the purchase.
  • Higher Event Match Quality
    : Full order and customer details on AddPaymentInfo help Meta match more events to real people, which improves attribution and targeting.
  • Consistent, trustworthy data:
    Every event now reports the same currency for an order, and invalid or blank values are never sent to Meta.
✨
What Stays the Same
  • Setup:
    Your Meta Pixel settings work exactly as before. No reconfiguration is needed.
  • Other events: PageView, ViewContent and Purchase fire at the same moments as before.
  • Consent:
    Events still respect your cookie-consent settings. If a visitor hasn't accepted advertising cookies, nothing is sent.
  • Conversions API:
    When the Conversions API is enabled, browser and server events are still sent together and deduplicated in Meta Events Manager.
  • Free orders:
    If an order requires no payment details at all, AddPaymentInfo is not sent, same as before. New: orders fully covered by a gift card now send it (with a value of 0).
  • Pixels without InitiateCheckout:
    If InitiateCheckout isn't enabled on your pixel, nothing changes.
✨
What to Expect
  • InitiateCheckout counts will go up.
    This is expected: the event now includes buyers who reach checkout and leave without paying. The gap between InitiateCheckout and AddPaymentInfo/Purchase now shows real checkout drop-off. Keep this in mind when you compare reports, automated rules or cost-per-InitiateCheckout before and after this release.
  • Page-level settings may take up to 24 hours to take effect on already-published pages
    . To apply them immediately, edit and save the page.
  • No change to consent or Conversions API behavior.
    Events still respect your cookie-consent settings. When the Conversions API is enabled, browser and server events are still sent together and deduplicated in Events Manager.
  • No action required
    . The update applies automatically.
Load More
→