# Zanfia changelog

> What changed in Zanfia, newest first. Each entry has a permalink. Labels: [New] = new
> capability, [Improved] = existing feature got better, [Fixed] = bug fix, [API] = Workspace
> API / CLI / MCP, [Mobile] = mobile app.
>
> Filters: `?since=YYYY-MM-DD` (entries dated on or after), `?limit=N`. Polish: `/pl/help/changelog.md`.
> Single entry: `/help/changelog/{slug}.md`. RSS: https://zanfia.com/help/changelog/feed/

38 entries (2026-07-30 .. 2026-09-10).

## 2026-09-10: Discord on the customer profile, recurring BLIK subscriptions, bulk e-mail subscribe

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-09-10-discord-panel-blik-subscriptions-customer-profile/

We shipped a Discord panel on the customer profile, subscriptions paid only by recurring BLIK, bulk subscribe to marketing e-mails, a rebuilt customer profile, and lesson attachments in the Workspace API.

## 💳 Checkout and prices

- **[New]** **Subscriptions paid only by recurring BLIK.** On a subscription price with recurring BLIK you can now switch the card off. The checkout then shows BLIK only.
- **[New]** **BLIK with a code on one-time Tpay prices.** The buyer types the BLIK code right in the checkout form, with no recurring-payment consent.
- **[Fixed]** **An unconfirmed BLIK payment ends cleanly.** When the buyer never confirms in the bank app, the status page says so and offers to try again. No half-created subscription is left behind.
- **[Improved]** **Apple Pay and Google Pay are tiles again.** They show only on devices that support them. The checkout builder and the assistant tell you when a wallet is off in your Stripe account.
- **[Improved]** **Payment methods in the builder match your prices.** Methods no price can use move to their own section, and a checkout mixing subscriptions and one-time prices gets two groups. Every tile shows its gateway.
- **[Improved]** **Edit prices straight from the checkout preview.** The pencil on a price tile opens an edit / hide / delete menu. Hidden prices on the Prices tab come back with one switch.
- **[Improved]** **Editing a recurring price says what happens to current subscribers.** The editor tells you whether the change applies to new purchases only or to the next renewals too. PLN amounts open with a comma right away.
- **[Fixed]** **Apple Pay is back after re-adding a custom domain.** One click on **Sync domains** in the Stripe settings does it.
- **[Fixed]** **Discount codes created before connecting Stripe work.** The checkout used to answer "invalid code".

## 👥 Customers

- **[New]** **Discord on the customer profile.** You can see whether the customer connected Discord and, from the panel, resend the invite, re-add them to the server, or remove them. Results land in the Activity tab.
- **[New]** **Bulk subscribe to marketing e-mails.** Select customers and pick **Subscribe to marketing emails** or **Unsubscribe from marketing emails**. We record the consent basis and show it on the customer's profile. Bulk actions are now grouped.
- **[Improved]** **The customer profile, rebuilt.** Profile is the first tab, and you edit details in place with no drawer. The rail with identity and tags stays on screen while you scroll.
- **[Improved]** **Notes.** An add button on the empty tab, author names, relative dates, and folding for long notes.
- **[Improved]** **Messages send instantly.** Your reply appears the moment you press Enter, and a failed send goes back into the composer.
- **[Fixed]** **"Add to product" works on the day access ends.** A customer whose one-time access just expired gets a fresh period instead of "already has access".

## 📰 Newsletters

- **[Improved]** **Sync now shows what it will import first.** You see the list of sends that will land in the archive before the import starts.

## 🤖 Assistant

- **[Improved]** **Batch repricing and module publishing.** "Set all prices to 299 zł" is now one approval card. The assistant can also publish a course module and clear a discount's expiry date.
- **[Fixed]** **Correct city names in recent purchases.** "Łysomice" instead of "%C5%81ysomice".
- **[Fixed]** **No "connect a payment gateway" nudge when one is connected.**
- **[Fixed]** **Community e-mails in the community's language.** For members who never set an account language.

## 🔌 Integrations and account

- **[Improved]** **Connecting GA4 explains the missing acknowledgement.** The message points to where in GA Admin to accept it.
- **[Improved]** **Set a password without logging in again.** You confirm with a code from your e-mail right in the dialog.
- **[Improved]** **User menu reordered.** Settings, Billing, and team at the top. The menu no longer jumps while you scroll.
- **[Fixed]** **Deleting a lesson video whose file is already gone.** The lesson is cleared without an error.

## 🧩 API

- **[API]** **Lesson attachments in the Workspace API.** `PATCH /v1/products/{productId}/course/lessons/{lessonId}` accepts `attachmentMediaIds`: the full list of files in the order you want. The MCP tool `update-course-lesson` takes the same field. [Learn more](https://zanfia.com/help/developer-api/courses)

## 2026-09-10: BLIK bank check at checkout, pasted community images, course progress fixes

[Improved] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-09-10-blik-bank-check-community-images-course-progress/

Recurring BLIK now checks the buyer's bank before starting a subscription, images pasted into community posts upload properly, and course progress and lesson switching behave again.

## 💳 Checkout

- **[Improved]** **Recurring BLIK checks the bank first.** When a buyer's bank does not support recurring BLIK, the checkout says so right away instead of starting a subscription that could never renew. With a supported bank the consent is saved and the first renewal is scheduled straight away.
- **[Improved]** **Choose which gateway takes BLIK.** If you have both Stripe and Tpay connected, the checkout builder and the checkout defaults in settings let you pick where BLIK payments go.
- **[Improved]** **Your Tpay alias notification address.** The Tpay integration settings show the address to paste into your merchant panel so that revoked or extended consents reach your account. Access after a revoked consent ends with the paid period, not immediately.
- **[Fixed]** **No double charge on a pending BLIK renewal.** A renewal that is still waiting for the bank is checked again later instead of being retried in the same cycle.

## 💬 Communities

- **[Fixed]** **Images pasted into posts upload properly.** A screenshot pasted from the clipboard goes through the regular upload, so the post publishes and the image shows in the Media Library with its real size. Older drafts with an embedded image ask you to add the image again.

## 🎓 Courses

- **[Fixed]** **Progress ring no longer stuck at 0%.** Lessons with an external video of unknown length now count toward the student's progress, course statistics, and the completion threshold.
- **[Fixed]** **The player stays on the current lesson.** Switching windows or returning to the tab no longer jumps the student to another lesson.
- **[Fixed]** **"Start learning" on the thank-you page opens the course.** The button no longer spins forever.

## 👥 Customers

- **[Fixed]** **Customer profile readable on a 13" screen.** Values no longer wrap one letter per line.

## 2026-09-09: Kit tags and MailerLite groups, certificates issued again, videos playable while encoding

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-09-09-kit-tags-certificates-early-play/

We shipped Kit tags and MailerLite groups as newsletter targets, a MailerLite migration wizard, re-issuing and deleting revoked certificates, and video playback while encoding is still running.

## 📰 Newsletters and e-mail integrations

- **[New]** **Kit tags and MailerLite groups as newsletter targets.** New subscribers can go to a Kit tag or a MailerLite group, not only to a form. On Kit accounts with a v4 key, the archive imports only the sends aimed at the chosen form or tag.
- **[Improved]** **A shorter newsletter Content tab.** Two rows: where subscribers go, and the archive with one status line. Import settings moved to their own dialog, and auto-import is on by default.
- **[Improved]** **The newsletter archive reads like a timeline.** Issues newest-first with a preview, and previous / next cards on every issue. **View archive** no longer lands on the login page.
- **[New]** **Move from MailerLite in one wizard.** Pick what to bring over; contacts become customers, groups and segments become tags. Progress shows under Tasks. You can also ask the assistant to "move me from MailerLite".

## 🎓 Certificates

- **[New]** **Issue a revoked certificate again.** The new certificate uses the current template, and the old verification link keeps answering "revoked".
- **[New]** **Delete revoked certificates.** The PDF and the record are removed, and the same customer can be issued a certificate again. Also available in the Workspace API, MCP, and the assistant. [Learn more](https://zanfia.com/help/developer-api/certificates)

## 🎬 Video

- **[New]** **Videos play while they are still encoding.** Videos up to 1080p can be watched in the Media Library, the lesson editor, and by your customers right after the upload. A badge shows that encoding is still running.

## ⚙️ Automations and customers

- **[Improved]** **Workflow status in the builder header.** One pill: live, live with unpublished edits, paused, or draft. Click it to pause or activate.
- **[Fixed]** **Renewed access re-enables the community membership.** A customer who bought again through the renewal link is back in the community too.
- **[Fixed]** **No horizontal scrollbar on 13-inch screens.**

## 📊 Conversion tracking

- **[Improved]** **GA4 purchase events carry the transaction type.** First purchase or renewal, as Meta already gets.
- **[Fixed]** **Repeat checkout visits reach Meta.** Every visit has its own identifier, so Meta no longer drops it as a duplicate.

## 2026-09-08: Newsletter archive from every Kit account, payments routed to the right workspace, clearer Instagram insights

[Fixed] [Improved]  Permalink: https://zanfia.com/help/changelog/2026-09-08-newsletter-archive-stripe-workspaces-instagram-insights/

The newsletter archive imports from older Kit accounts and large sending histories, Stripe payments land in the workspace that owns the Stripe connection when you have several, Instagram insights explain when Meta has not enabled them yet, and re-subscribing a GetResponse contact no longer reports a failure.

- **[Fixed]** **Newsletter archive imports from every Kit account.** The archive preview and import under the newsletter's content now work with Kit accounts that use the older API key and with accounts that have sent hundreds of issues. The import checks only the newest issues in the chosen period, retries when Kit rate-limits it, and reads open and click counts correctly, so issues no longer come back as "0 campaigns" or time out.
- **[Fixed]** **Stripe payments land in the workspace that owns the connection.** If you own several workspaces and switched your default workspace, payments, renewals, and access from the Stripe account connected to another workspace were not recorded there. Every Stripe event is now handled in the workspace whose Stripe connection it belongs to, regardless of your default workspace.
- **[Fixed]** **GetResponse contacts that already exist count as added.** Adding a subscriber to a GetResponse list they are already on no longer shows up as a failed automation step or sends you a failure e-mail.
- **[Improved]** **Instagram insights say when they are not available yet.** When Meta has not enabled insights for your connected Instagram account, the Social media page shows a short explanation instead of an error.
- **[Improved]** **WhatsApp card under Integrations.** **Settings → Integrations → Social media** now has a WhatsApp card that takes you straight to **Inbox → WhatsApp**, where the connection is set up.
- **[Improved]** **Instagram publishing waits for Meta's approval, visibly.** Until Meta approves publishing for Zanfia, the Instagram target in the post composer is dimmed with a "Waiting for Meta approval" chip, and a publish attempt returns a clear message instead of an error. Connecting Instagram and answering messages in the Inbox are not affected.
- **[Fixed]** **E-mail history names blocked addresses.** When a customer's address was blocked by the mail provider after an earlier bounce, the e-mail history in the customer's profile said "temporary technical problem on our side". It now says the address is blocked after a previous rejection, and the assistant reports the same.
- **[Fixed]** **Plan limits update right after a plan change.** After you change your plan, the limit banner in the panel and the "limit reached" e-mails use the new plan's limits immediately, instead of the previous plan's until the next day.
- **[Fixed]** **A team member's login no longer changes your plan.** When a member of your workspace signed in with Google, the sign-up trial could replace the workspace's paid plan. The trial is now granted only to a workspace created during that sign-up, and never to a workspace with an active paid subscription.

## 2026-09-07: Payment method on Transactions, sturdier bulk actions, e-mail usage in your plan

[Improved] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-09-07-payment-method-column-bulk-actions-fixes/

See how each order was paid, run bulk actions on hundreds of customers without errors, follow your monthly e-mail usage under Settings, show optional consents next to Apple Pay and Google Pay, and fixes for workflow run details, segments, and e-mail marketing integrations.

## 💳 Sales and checkout

- **[Improved]** **Payment method on Transactions.** The Transactions list has a **Payment method** column, and the order details show it too: BLIK, card, online transfer, Apple Pay, Google Pay, Klarna, PayPal, Przelewy24, Paynow, instalments, or bank transfer. For PayU orders the exact method chosen in the payment panel is recorded, so BLIK and bank transfer are told apart.
- **[Improved]** **Optional consents next to Apple Pay and Google Pay.** Optional checkout consents, such as a marketing opt-in, now appear inside the quick-payment block, so buyers who pay with a wallet see them before paying. They are still listed at the bottom of the form as well.
- **[Fixed]** **A mistyped e-mail in the checkout gets a clear message.** An e-mail address with a stray character was passed on to the payment provider and failed with a generic error. The form now points at the e-mail field before anything is charged.
- **[Improved]** **Sync domains checks Apple Pay.** **Settings → Payments → Stripe → Sync domains** re-validates Apple Pay on every registered domain and warns you which domains still need attention, instead of only registering new ones.

## 👥 Customers

- **[Improved]** **Bulk actions on large selections.** Granting access to several hundred customers at once failed with a size error; it goes through now. Certificates for many customers are issued in parallel, an import into an archived product is refused with a clear message, the import validator reports the same problems the run would, tag actions skip deleted customers, and each import run in **Tasks** shows which workspace it belongs to.
- **[Fixed]** **Customers → Segments opens the segments.** The Segments entry in the Customers menu showed the customer list instead of your segments.
- **[Improved]** **E-mail usage in your plan.** **Settings → Usage** shows how many marketing e-mails you sent this month against your plan's monthly limit, and the plan card lists the limit. On Zanfia 2.0 plans a send that would exceed the limit is stopped before it goes out; automation and community e-mails are counted but never blocked.

## ⚙️ Workflows

- **[Fixed]** **Run details show which branch a condition took.** In a workflow run, a condition step now says **Condition met** or **Condition not met** next to its status, so you can see why the run went the way it did.
- **[Fixed]** **No false "Unpublished changes" badge.** Workflows created before the visual builder showed "Unpublished changes" right after opening, without any edit. The badge appears only when you change something.

## 🔌 Integrations

- **[Fixed]** **Disconnect an e-mail marketing account that a deleted product still used.** Removing an integration such as ActiveCampaign or MailerLite failed with "still in use" when the only product using its list had been deleted. It disconnects now, and when a live product still uses the list, the error names the products so you know what to detach.
- **[Fixed]** **Refreshing a mailing account with spaces in its name.** The refresh and disconnect buttons on an e-mail marketing account whose name had leading or trailing spaces answered "not found". They work for every account now.
- **[Improved]** **You hear back when a fix ships.** When a support request of yours was waiting for a release, closing it after the release adds a message to the conversation and e-mails you that the change is now available in your account.

## 2026-09-07: Newsletter subscribers reach your connected lists, product pages open the right checkout

[Fixed]  Permalink: https://zanfia.com/help/changelog/2026-09-07-newsletter-lists-product-page-checkout/

Subscribers you add to a newsletter by hand or through a purchase now land on the Kit or GetResponse lists connected to it, and the buy button on a product page opens the default checkout even when a free checkout shares the product's address.

- **[Fixed]** **Newsletter subscribers are pushed to the connected lists again.** When a newsletter has Kit or GetResponse lists and tags connected under its e-mail settings, every subscriber who buys the newsletter, is imported, or is added by hand now lands on those lists with the configured tags, and is removed from them when the access ends. Subscribers added since the switch to the new platform have been synced for the affected accounts.
- **[Fixed]** **Product page buy button opens the default checkout.** When a free checkout used the same address as the product, the product page and the store card opened the free one. They now open the checkout marked as default on the offer, and the free checkout stays reachable through its own link.

## 2026-09-07: Instagram, Facebook Pages, WhatsApp and Telegram are open to everyone

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-09-07-instagram-facebook-whatsapp-telegram/

Connect Instagram and Facebook Pages to publish and schedule posts, and answer Instagram, WhatsApp and Telegram messages from the Zanfia Inbox. Tokens refresh on their own, and the connection screens got simpler.

Meta has approved Zanfia's app review, so the social channels that were waiting behind "Coming soon" are now available on every workspace.

## 📣 Publish to Instagram and Facebook Pages

- **[New]** **Connect Instagram and Facebook Pages.** **Settings → Integrations → Social media** and **Social posts → Accounts** show Instagram and Facebook Pages as connectable accounts. Draft, schedule and publish posts to them the same way as to LinkedIn, with a first comment posted right after the post goes live. Threads, YouTube and TikTok still show "Coming soon".
- **[API]** **Same channels in the Workspace API, CLI and MCP.** Everything the social posts API already did for LinkedIn works for Instagram and Facebook Pages. [Learn more](https://zanfia.com/help/developer-api/social)

## 💬 Inbox: Instagram, WhatsApp and Telegram

- **[New]** **Answer Instagram direct messages in the Inbox.** Connect Instagram and the **Inbox → Instagram** tab shows your conversations, with the sender's profile picture and name, including threads that existed before you connected. Replies go out from Zanfia.
- **[New]** **WhatsApp and Telegram conversations.** **Inbox → WhatsApp** works with your WhatsApp Business number. **Inbox → Telegram** works through the Zanfia bot: share your bot link from the Telegram card and every customer who starts a chat with it appears as a conversation you can answer.
- **[Improved]** **Conversations linked to a customer.** A conversation you link to a customer shows on their profile with an **Open conversation** button.

## 🔧 Connection details

- **[Improved]** **Tokens refresh on their own.** Instagram access tokens are renewed in the background before they expire. If a renewal is not possible, a banner on the Social media page asks you to reconnect, and nothing is published until you do.
- **[Improved]** **Simpler connection cards.** After you connect an account from the Social media tab, a confirmation shows what was connected. Technical details of a connection sit behind **Show details** instead of filling the card. When Meta cancels a connection, the dialog tells you why.
- **[Fixed]** **Disconnecting Instagram stops its messages.** Removing an Instagram connection also stops message delivery for it, so no conversations arrive from a disconnected account.

## 2026-09-07: Choose the order of products in your customers' library

[New] [Improved] [API] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-09-07-customer-library-order/

Decide what your customers see first in their library: newest first, alphabetical, or your own drag-and-drop order across courses, communities and other products. Group the "All" view by type or show one flat list. Available in the editor, the Workspace API, the CLI and the assistant.

Until now the library your customers see after signing in sorted products by date, inside sections per product type. You can now decide the order yourself.

- **[New]** **Product order in the client area editor.** **Site → Client area → Library → Order** offers **Newest first**, **Alphabetical** and **Custom order**. Custom order is a drag-and-drop list of your published products; each row has a menu with **Move to top / up / down / bottom**, a search box appears once you have more than a few products, and **Reset order** rebuilds the list from newest-first or alphabetical. The preview on the right follows every change.
- **[New]** **One order across product types, on the web and in the app.** A custom order applies to the whole library, so a course can come before your communities in the **All** view of the gallery and list layouts. Filters per type keep grouping. The Zanfia mobile app follows the same order on its home list, including community tiles.
- **[New]** **Group the "All" view by type, or not.** A new **"All" view** switch in the Order tab keeps today's sections per product type (communities first) or shows one flat list in the chosen order. With a custom order the list is always flat.
- **[Improved]** **Published products only.** The order list shows the products customers can actually see; a note tells you how many drafts and hidden products are left out.
- **[Improved]** **Editor tabs and inbox settings.** The library settings are split into **Layout**, **Order** and **Messages** tabs, and both messaging switches (member messages, messages from members) live in one **Inbox settings** dialog.
- **[API]** **Workspace API, CLI, MCP and the assistant.** `PUT /site/portal` accepts `libraryOrder`, `libraryCustomOrder` and `libraryGroupByType`; the CLI has `zanfia site update portal --library-order`, `--custom-order` and `--group-by-type`; the `update-client-area` MCP tool and the assistant take the same settings ("put the new course first in the library").

## 2026-09-06: Delete archived clients, move lessons with the assistant, attachment fixes

[Fixed] [Improved]  Permalink: https://zanfia.com/help/changelog/2026-09-06-archived-clients-delete-assistant-lessons/

The Delete button on archived clients works again, the assistant can move a lesson to another module and manage e-mail attachments, the draft course checklist names empty modules, and clearing attachments on a system e-mail now saves.

- **[Fixed]** **Delete an archived client.** **Product → Access → Archived → Delete** failed for everyone with a permission error. The client record is removed now, and the row disappears from the archived list.
- **[Improved]** **Move a lesson with the assistant.** Ask the assistant to move a lesson to another module of the same course; it keeps the lesson's content and order in the target module. It can also add or remove Media Library files as attachments on your e-mail templates and tell you what is in the library.
- **[Fixed]** **Draft course checklist names modules without lessons.** The checklist on a draft course said "add lessons" without saying where. It now lists the saved modules that still have no lesson.
- **[Fixed]** **Clearing attachments on a system e-mail saves.** Removing every attachment from an e-mail under **Site → Emails** looked saved but came back after a reload. The empty list is stored now.

## 2026-09-05: Repeat purchases, a safety net for recurring BLIK, real amounts in workflow conditions

[Fixed] [Improved]  Permalink: https://zanfia.com/help/changelog/2026-09-05-repeat-purchases-blik-safety-workflow-amounts/

Customers with access can buy again when the offer allows it, recurring BLIK switches itself off when the operator refuses it, workflow conditions and webhooks get the real order amount, community chat works for owners in the mobile app, and the invoice-account error is visible instead of silent.

## 🛒 Checkout and payments

- **[Fixed]** **Customers with access can buy again.** A checkout with **Allow repeat purchases** turned on refused buyers who already had access to the product, showing "You already own this". They can buy again now, as the setting promises.
- **[Improved]** **Recurring BLIK switches itself off when the operator refuses it.** If Tpay rejects a recurring BLIK consent, the **Recurring BLIK** switch under **Settings → Payments → Tpay** turns off by itself, you get a notification in the bell, and the buyer is asked to pay by card instead of seeing a failed payment. One-time prices no longer show the recurring BLIK tile.
- **[Improved]** **A missing invoice account is an error you can see.** When a checkout has no invoicing account selected and the workspace has more than one, the order shows a clear error and lands in the invoice-errors filter instead of quietly skipping the invoice. Retrying from the order tells you the reason.
- **[Improved]** **Przelewy24 IP restriction explained.** The connection form and the error shown when Przelewy24 answers 403 both explain how to allow Zanfia's addresses in your Przelewy24 panel.

## ⚙️ Workflows and customers

- **[Fixed]** **"Order amount" conditions get the real amount.** Workflow conditions on the order amount and outgoing webhooks received an empty amount for some purchases, so conditions never matched. They carry the paid total now.
- **[Fixed]** **Saving and previewing a segment on a large customer base.** On workspaces with tens of thousands of customers, saving or previewing a segment timed out. Filtering runs on the server now, and when a preview runs out of time it shows a lower bound ("over N customers") instead of an error.

## 👥 Community

- **[Fixed]** **Community chat in the mobile app for owners and staff.** Workspace owners and staff opening a community chat in the mobile app got a permission error. Chat opens normally now.

## 🤖 Assistant

- **[Improved]** **Assistant answers after a web search, and knows quizzes and team members.** A question that made the assistant search the web could end without a reply; it always answers now. It can also create and edit lesson quizzes, and take you to **Settings → Team**.

## 2026-09-04: Attachments in e-mails, terms as PDF, a sortable learners table

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-09-04-email-attachments-legal-pdf-learners-table/

Attach Media Library files to any e-mail you send, download your terms and privacy policy as PDF and attach them with one click, an optional "Order awaiting payment" e-mail, a searchable learners table in course analytics, and fixes for workflows, test orders, and duplicate subscriptions.

## ✉️ E-mails

- **[New]** **Attach files to your e-mails.** E-mail templates, the **Send e-mail** step in a workflow, and every e-mail under **Site → Emails** have an **Attachments** field. Pick up to 5 files from the Media Library, up to 10 MB per message, and they go out with the e-mail. A step that uses a template inherits the template's files. If a file is deleted from the library later, the e-mail still goes out without it.
- **[New]** **Terms and privacy policy as PDF.** **Site → Privacy & legal** has a **Download PDF** button on the terms and privacy policy cards and in the full-screen editor. The PDF is rebuilt every time you save the text; older workspaces click **Generate PDF** once. In the attachments menu of any e-mail, **Terms of service (PDF)** and **Privacy policy (PDF)** attach the current file, so a purchase confirmation can carry your terms without uploading anything.
- **[New]** **"Order awaiting payment" e-mail, off by default.** A new e-mail under **Site → Emails** goes to a buyer who placed an order through a payment gateway but has not paid yet. Open it and turn on **Send this email** to use it. Free products, test purchases, and bank-transfer orders never send it.
- **[Fixed]** **Polish login e-mails.** The Polish login-code and login-link e-mails were missing a comma in the closing sentence, and the plain-text version of the English login-link e-mail was in Polish. Both are correct now.

## ⚙️ Workflows

- **[Improved]** **Remove or reconnect a connection in the builder.** Hover a connection between two steps to get a remove button, or drag its end onto another step to reconnect it. Before, the only way was to select the connection and press Delete.
- **[Fixed]** **Test orders no longer trigger the abandoned-cart automation.** A test purchase completed on a checkout with an abandoned-cart automation was treated as an abandoned session and got the recovery e-mail. It counts as converted now.

## 📊 Courses and reports

- **[Improved]** **Learners table with search, filters, and sorting.** **Course analytics → Learners** searches by name or e-mail, filters by progress (no lesson completed, in progress, completed), by recent activity (7 days, 30 days, inactive 30+ days), and by the last lesson opened, and sorts on every column, with a new **Last lesson** column, a "N of M learners" counter, and 25 / 50 / 100 rows per page.
- **[Improved]** **All events in Traffic & conversions.** The Events tab stopped at the first 200 events and forgot the rows-per-page setting. A **Load older events** button now pages through the whole history, and the page size holds.
- **[Improved]** **Import progress in Tasks.** A contact import from an e-mail tool such as MailerLite shows "N / M contacts" in the progress pill and under Notifications → Tasks, and finishes with a summary of new, existing, and skipped contacts. The assistant can also take you to the right place when you ask where the import is.
- **[Improved]** **Bulk client actions are much faster.** Revoking access, deleting, or changing the access period for many clients at once runs in batches, so a list that used to take minutes completes in seconds. The progress bar still counts every client.

## 🛒 Checkout and payments

- **[Fixed]** **No duplicate subscriptions from a double submit.** Submitting a subscription checkout twice within seconds could create two subscriptions for the same buyer, with only one linked to the access. The second attempt is refused as already purchased, and a duplicate that still bills is cancelled automatically when the linked one renews.
- **[API]** **Renewal webhooks carry the Zanfia price.** The subscription-renewed webhook and renewal orders could carry a payment-provider price id for subscriptions whose earlier records held one. They now resolve the Zanfia price from the buyer's earlier orders and the checkout, so integrations always get the price they know.

## 🤖 Assistant

- **[Improved]** **The assistant sets the "Next step" on your thank-you page.** Ask it to show another offer after purchase, with a headline, description, and button label, and it updates the card. Editing the thank-you headline or message through the assistant no longer clears a "Next step" card you had set.

## 2026-09-03: YouTube Shorts in community posts, channel order in the mobile app, checkout fixes

[Fixed] [Improved] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-09-03-shorts-embeds-mobile-channel-order-checkout-fixes/

Shorts links embed in community posts, the mobile app shows channels in your order, offers with manual payment publish again, and the offer shown after purchase works for every buyer.

## 👥 Community and mobile app

- **[Improved]** **YouTube Shorts embed in posts.** A `youtube.com/shorts/…` link inserted as a video in a community post now renders as an embedded player, on the web and in the mobile app, like any other YouTube link.
- **[Fixed]** **Channel order in the mobile app.** The channel chips on the community home screen follow the order you set for channels and groups, the same as the web community.

## 🛒 Checkout and payments

- **[Fixed]** **The offer after purchase shows for every buyer.** The one-time offer shown right after a purchase could be skipped for some buyers earlier that day. It shows again, and the purchase itself was never affected.
- **[Fixed]** **Publishing an offer with manual payment.** An offer that accepts bank transfer could not be published when it also had a deactivated or archived subscription price. Only active prices count now, so Publish is available again.

## 🤖 Assistant

- **[Improved]** **The assistant opens more reports and answers more precisely.** Ask it to open Traffic & conversions or Site → Emails and it takes you there. Its answers about an offer now include the repeat-purchase settings, order answers name the offer the order came from, and it explains that every chat message uses AI credits, that workflow e-mail bodies are edited in the Markdown editor, and how plans are assigned on paid versus free offers.

## 2026-09-03: E-mail alerts for you in workflows, after-purchase e-mails in the new editor

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-09-03-owner-alerts-and-after-purchase-emails/

A workflow step that e-mails you when something happens, after-purchase e-mails edited in the new e-mail editor from the checkout builder, a faster assistant, and fixes for creators with more than one workspace.

## ⚙️ Workflows

- **[New]** **Get an e-mail when something happens.** The new **Notify me by e-mail** step sends an alert to your account address with a subject and body of your choice, using variables such as the client's name, the product, or the price. The customer receives nothing. Ask the assistant "e-mail me whenever someone renews" and it drafts the automation for you.
- **[Improved]** **A new automation starts with its trigger.** **New automation** first asks what should start it, with triggers grouped and searchable, or lets you begin with an empty canvas. The automations page opens in list view by default.
- **[Improved]** **Edit e-mail templates without leaving the step.** In a **Send e-mail** step, editing, duplicating, or creating a template opens the template editor in a full-screen window over the step. Going back returns you to the step, and unsaved edits ask before closing.
- **[Improved]** **See where each template is used.** The e-mail templates list shows which automations use a template, with a Used / Unused filter. The editor header shows "Used in N automations" with links, and deleting a used template lists the automations that would be affected.
- **[Improved]** **Template editor polish.** A searchable template switcher in the header, duplicate and delete in the header menu, and blank lines at the end of a template are now kept when saving.
- **[Fixed]** **Deleting a template from the row menu.** Choosing Delete in a template's row menu opened the template instead of deleting it. It deletes now, and Duplicate asks for confirmation first.

## ✉️ E-mails

- **[New]** **After-purchase e-mails edited in the new editor.** In the checkout builder, **After purchase → E-mails** no longer has an inline copy form. Each e-mail shows where its copy comes from and a button that opens the e-mail editor in place. Edit the shared e-mail used by all products, or write copy only for this product or only for this offer, and restore the default copy with one click.
- **[Improved]** **Better guidance while editing an e-mail.** If a required variable is missing, the editor tells you which one, per language, with an Insert button. An emptied body previews empty instead of failing, and a refresh button re-renders the preview on demand.
- **[Fixed]** **Trial end date in customized trial e-mails.** A customized "Trial started" e-mail now shows the "Trial ends on" line again.
- **[Improved]** **Visible unsubscribe link in community e-mails.** Community notification and digest e-mails carry an "Unsubscribe from these messages" link in both the branded and the plain layout. Plain e-mails also show a small "Sent via Zanfia" line, hidden when you turn off Zanfia branding. Workflow e-mails are transactional and do not get an unsubscribe link.
- **[Improved]** **Unsubscribe and notification settings stay in sync.** When a member unsubscribes from new-post or digest e-mails through a link, their community notification settings update to match, and turning a notification back on in their profile lifts the unsubscribe. The unsubscribe page links to "Manage notifications".

## 🤖 Assistant

- **[Fixed]** **Faster answers.** The assistant no longer retries tools while it is still loading a toolbox, so answers that used to take minutes arrive right away. Requests that combined course and media tools no longer end with an empty response.
- **[New]** **Product ideas from a social profile.** Paste a public Instagram, TikTok, YouTube, or LinkedIn profile link and the assistant reads the bio and recent posts, then proposes products grounded in what you already publish.
- **[Improved]** **More the assistant can do.** Attach files and a thumbnail to a lesson, get the product page link in product answers, open your store page, and draft "notify me" automations. Its answers about the community Materials tab, product page addresses, quizzes versus surveys, team roles, and discount precision are more accurate.
- **[Fixed]** **Buyers who never bought again.** Asking for buyers who did not purchase anything after their first order returned an error. It returns the list now.
- **[API]** **After-purchase e-mail copy in MCP.** The after-purchase tools report which e-mails have custom copy and say where the text is edited.

## 🛒 Checkout and payments

- **[Fixed]** **Cards that need bank verification when subscribing.** Some banks require verification before a card can be saved for a subscription. The checkout now opens that verification and completes the purchase instead of refusing the card.
- **[Fixed]** **Links with a hidden character.** A link pasted at the end of a paragraph in the editor could pick up an invisible character, which broke checkout links with a hidden price. The editor no longer adds it, existing content was cleaned, and the checkout ignores it.
- **[Fixed]** **Clear message when a checkout does not load.** Buyers see "Could not connect" or "Could not load the checkout" instead of a technical error code.
- **[Fixed]** **Revoking access backed by a subscription.** On a customer's card, Revoke access on an access tied to a subscription opens the archive dialog with the cancel-subscription option instead of silently doing nothing.
- **[Fixed]** **The real reason a renewal failed.** A failed renewal shows the decline reason reported by the card issuer instead of always "insufficient funds".

## 🏢 More than one workspace

- **[Improved]** **A new workspace gets its own site address at once.** The site setup wizard is gone. A new workspace starts with an active address based on its name, and the first address you save publishes the site. Addresses are unique per workspace, so a second workspace can no longer take over the first one's.
- **[Fixed]** **Everything follows the workspace where the sale happened.** Purchase confirmations, thank-you pages, tracking pixels, invoices, referral counts, and the notification bell now stay with the workspace of the sale. API keys keep working after you switch workspaces, Settings → Subscription in a second workspace shows an info note instead of trying to sync, and deleting your default workspace moves you to another one.
- **[Improved]** **Dashboard reminder for an unpublished site.** A dismissible alert on the dashboard links to Site → General until the site is published.

## 2026-09-02: Workflow delays until a specific day and time

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-09-02-workflow-wait-until-and-fixes/

The Delay step can now wait until a chosen weekday at a given time or until a specific date in your account's time zone. Plus new assistant tools and a batch of checkout and payment fixes.

## ⚙️ Workflows

- **[New]** **Wait until a weekday or a date.** The Delay step has two new modes besides "wait for a duration": wait until the next chosen weekday at a given time (for example every Thursday at 10:00), or wait until a specific date and time. Runs pause and resume at exactly that moment.
- **[New]** **Account time zone.** Settings → Workspace has a new Time zone setting. "Wait until" steps and day boundaries in reports follow it; by default it inherits the time zone from your profile.
- **[Improved]** **Triggers and steps in the builder sidebar.** The workflow builder's left panel now groups triggers and steps separately, and the step picker is easier to read in dark mode.

## 🤖 Assistant

- **[Improved]** **Video lessons from chat.** Ask the assistant why a lesson video is stuck: it reports the processing status and can attach a different video from your media library to the lesson.
- **[Improved]** **Custom domain diagnosis.** When a custom domain does not work, the assistant checks the domain settings, DNS, and the certificate and tells you which one is wrong and what to fix.
- **[Improved]** **E-mail delivery problems.** Ask which recipients bounced, complained, or are suppressed and the assistant lists them grouped by address.
- **[Fixed]** **Correct access end dates from the assistant.** Asking the assistant for a client's product accesses showed every end date as January 1970; it now reports the real dates.
- **[Improved]** **More the assistant can do for you.** It can copy an automation to another product, report the status of a connected integration and its synced lists, change a product's custom type label, and show or hide the event details on a thank-you page.

## 📊 Dashboard and clients

- **[Improved]** **Clients card counts active clients.** The Clients card on the dashboard shows active clients, with the total of all clients on a second line. The active customers number links to the client list filtered to those with access, and a tooltip explains what counts as active.
- **[Improved]** **Next charge in the client's access details.** The billing section of a client's access detail shows the amount and date of their next subscription charge, taken from the payment provider.
- **[Improved]** **Bundled access on the Access tab.** A product's Access tab now also lists clients who have access through another product's plan, marked "via bundle" with the parent product's name. Clicking such a row opens the client on the parent product.

## 📚 Courses and knowledge bases

- **[New]** **Tags on knowledge base articles.** Add tags to an article in the editor; members get a tag bar in the knowledge base to filter articles. Tags are also available through the Workspace API, CLI, and MCP. [Learn more](https://zanfia.com/help/developer-api/knowledge-base)
- **[Improved]** **Replace a video while it is processing.** The lesson editor offers "Replace with another file" even while the current video shows as processing.
- **[Fixed]** **Knowledge base videos play for members.** Videos embedded in a knowledge base article played for the creator but showed a black box for members. They now play for everyone.

## 🛒 Checkout and payments

- **[Fixed]** **Discount codes work again after a failed sync.** A code that was rejected at checkout after a payment provider error now applies, including on a product's additional checkouts.
- **[Fixed]** **Card updates that require bank verification.** Customers whose bank asks for extra verification when adding a card can now update their card in the customer area; the verification opens right in the dialog.
- **[Fixed]** **Decimal prices in the price dialog.** Typing a price with a comma (4489,50) in the checkout builder's price dialog keeps the decimals instead of turning into a much larger number.
- **[Fixed]** **Tax records for subscription invoices.** Tax transactions for subscription renewals are now recorded with the payment provider; previously only one-time purchases were.
- **[Fixed]** **Approving manual orders.** Approving a manually paid order no longer fails with an error for some accounts.
- **[Fixed]** **Abandoned carts list stays accurate.** A buyer who retried in several tabs and then paid no longer stays on the list, and the list shows one row per buyer and product.

## 🧰 Other

- **[Improved]** **Filter the media library by several uses at once.** The usage filter is now a multi-select, so you can show files used in lessons and in pages in one view.
- **[Improved]** **Pasted links with spaces around them.** The link dialog in editors trims pasted addresses, tells you inline when a link is invalid, and grows to show long links in full.
- **[Fixed]** **Team members with a customer account.** A team member whose own account started as a customer saw the customer view inside the workspace they manage. They now get the full dashboard.
- **[Improved]** **What's New, sorted by area.** The What's New page in the dashboard is redesigned with filters by type and area (assistant, API and integrations), and it now mirrors this public changelog.
- **[Fixed]** **One e-mail when you reach a plan limit.** Reaching several plan limits at once now sends one e-mail listing all of them instead of one per limit, and reminders only go out for the clients limit.
- **[Fixed]** **One invoice per Zanfia payment.** A Zanfia subscription payment could occasionally produce two invoices. Each payment now produces exactly one.

## 2026-09-02: Edit every system e-mail your customers receive

[New] [Improved] [API]  Permalink: https://zanfia.com/help/changelog/2026-09-02-system-email-editor/

Site → Emails is open for everyone. Rewrite purchase confirmations, access reminders, and the rest as one rich-text document per language, with your branding, variables, and a live preview.

## ✉️ The editor

- **[New]** **Site → Emails edits every system e-mail.** Purchase confirmations, access and renewal reminders, sign-in links, certificates, consultation bookings, direct messages, testimonial requests, and more are now yours to rewrite. Each e-mail is one document per language, with a live branded preview beside the editor and a "Send test" button that delivers it to your inbox.
- **[New]** **Rich text, not markdown.** Headings, paragraphs, links, lists, images from the Media Library with width, alignment, and caption, emoji, buttons, dividers, and a details box. The first heading is the e-mail's headline: edit it, move it, or delete it.
- **[New]** **Variables from the toolbar.** The `{{ }}` menu inserts the customer's name, product, sign-in link, customer panel link, checkout link, update-payment-method link, payment method, your name and e-mail, additional products, and client data at the caret. Required variables are validated before saving, and a line whose variables are all empty is left out of the sent e-mail.
- **[Improved]** **Editable order, access, and trial details.** In the details box, untick a row to hide it, give a row a custom label per language, or hide the box's title.
- **[Improved]** **Previews show real names.** Previews and test sends use your site's real name and the selected product's real name, and access-ending e-mails say "1 day left" and "today" correctly in Polish.

## 🎨 Branding

- **[New]** **Your colors and logo in every e-mail.** Button and section colors set in the editor render in the sent mail, the canvas follows your branding accent, and color pickers offer swatches. A new "No logo" option sends e-mails without a logo.
- **[Improved]** **Your site's logo and colors by default.** If you haven't saved anything under Site → Emails yet, every e-mail your customers receive now carries your site's logo, accent color, name, and contact e-mail, exactly as the editor preview shows. Save your own branding there and it takes over.
- **[Improved]** **Readable buttons no matter the accent.** When your accent is too light for white button text, e-mails fall back to the standard accent instead of an unreadable button.
- **[Improved]** **Community, support, and certificate e-mails carry your branding.** Community notifications, support-ticket replies, and certificate-expiry e-mails render with the same branding and editable slots as the rest.

## 🔌 API, MCP, and assistant

- **[API]** **Full e-mail bodies through the Workspace API.** System e-mail endpoints accept and return `body`, `bodyEn`, and `bodyPl`; MCP and the assistant's `update-system-email` take the same fields. The older `edit-system-email-layout` tool is deprecated. [Learn more](https://zanfia.com/help/developer-api/email-templates)

## 2026-09-02: Reusable e-mail templates for your workflows

[New] [Improved] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-09-02-email-templates-library/

Write an e-mail once under Marketing → E-mail templates, use it in any workflow step, send yourself a test, and set the inbox preview line.

- **[New]** **A library of e-mail templates.** Marketing → E-mail templates is a new place to write the e-mails your workflows send. Create a template once and pick it in any "Send e-mail" step; when you edit the template, every automation that uses it sends the new version. From inside a workflow step you can create a new template or open the one it uses, and the step keeps its template when you come back.
- **[New]** **Send yourself a test.** Every template has a "Send test" button that delivers the e-mail to your inbox exactly as a workflow would send it, with your branding and variables filled in.
- **[New]** **Inbox preview line.** Set the short text mail apps show next to the subject. It is stored with the template and goes out with every send.
- **[Improved]** **Live preview while you write.** The e-mail step in the workflow builder opens a near-fullscreen editor with a live preview beside it. Drag the divider to resize, and switch the preview between light and dark to see what your subscribers will see.
- **[Improved]** **Switch templates from the editor header, and leave safely.** The template editor lets you jump between templates from its header. Closing with unsaved changes asks whether to save, discard, or keep editing instead of dropping your work.
- **[Fixed]** **Clean characters in workflow e-mails.** E-mails written with brackets or other special characters no longer arrive with stray backslashes in front of them.

## 2026-08-31: A searchable step picker in the workflow builder

[Improved] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-08-31-workflow-step-picker-assistant-counts/

Adding a workflow step now opens a searchable picker with categories, connected email tools get their own tiles, and the assistant reports exact client counts.

- **[Improved]** **Searchable step picker in the workflow builder.** The "+" between workflow steps now opens a picker with categories and search instead of one long list. Each connected email tool gets its own tile under Integrations — pick it and the step's settings show only that tool's actions, lists, and tags. A back arrow takes you from a new step's settings straight back to the picker.
- **[Improved]** **Exact client counts from the assistant.** Ask the assistant how many clients a product has and it answers with exact numbers — active, imported, test, and past-due — instead of estimating from a page of results.
- **[Improved]** **More accurate assistant guidance.** The assistant now takes you to the abandoned carts view when you ask about them, suggests the correct way to restore expired access (re-granting it), and checks a client's profile before offering to message them.
- **[Fixed]** **No more runaway tabs on the customer home screen.** Opening a platform card in the customer area could open the same page in new tabs over and over; one click now opens it once.

## 2026-08-30: Certificates, subscriptions, site settings, community events, and more in the Workspace API, CLI, and MCP

[API] [New]  Permalink: https://zanfia.com/help/changelog/2026-08-30-workspace-api-certificates-subscriptions-site/

Seven new areas of the dashboard are now available to your scripts, the Zanfia CLI, MCP clients, and the creator assistant, with the same rules and approval gates as the dashboard.

Everything below is on one shared core with the dashboard: the same validation, the same permissions, and, in the assistant, an approval card before anything irreversible. Each area lands in the Workspace API (with regenerated OpenAPI and docs), the `zanfia` CLI, and the MCP server at the same time. [API overview](https://zanfia.com/help/developer-api/overview) · [CLI commands](https://zanfia.com/help/developer-cli/commands) · [MCP](https://zanfia.com/help/developer-mcp/connect)

- **[API]** **Certificates.** List, issue (single or bulk), revoke, reinstate, and resend certificates, and manage templates, from `/certificates*`, `zanfia certificates …`, and matching MCP tools. Issuing from outside the dashboard is asynchronous: you get a `202` and poll the list until the PDF is rendered. The assistant issues certificates on request after a confirmation. [Learn more](https://zanfia.com/help/developer-api/certificates)
- **[API]** **Subscriptions and customer operations.** Failed subscription payments and their retry, upcoming renewals, ending subscriptions, bulk actions on a product's clients or on a filtered list, client delete, and a CSV export identical to the dashboard's, plus approve or reject of manual orders. CLI: `zanfia subscriptions …`, `zanfia clients bulk-* | delete | export`, `zanfia orders approve | reject`. [Learn more](https://zanfia.com/help/developer-api/subscriptions)
- **[API]** **Clients, consents, tracking, course analytics.** Cancel a client's subscription, read a client's tags, e-mail log, accesses and notes (and add a note), list and upsert checkout consents, read conversion events and tracking health, and pull course analytics and lesson transcripts. `PATCH /checkout-settings` no longer accepts `customConsents`; use the consents routes. [Learn more](https://zanfia.com/help/developer-api/clients)
- **[API]** **Automation runs, community events, moderation.** Retry a failed run or start a test run of an automation (`202`, real actions fire); create, update, list, and delete community events; read the moderation queue and resolve a report; toggle community settings (events, direct messages, content visible from join date, gamification, auto-hide after reports) from `zanfia communities settings update`. [Learn more](https://zanfia.com/help/developer-api/communities)
- **[API]** **Content editors.** Newsletter archive issues (create, save and publish a draft, discard, copy to another newsletter), knowledge-base tree reorder and article covers, and lesson video chapters and moments, including generating them, with the same credit gate as the dashboard. Every surface merges with the current video data, so saving chapters never clears moments. [Learn more](https://zanfia.com/help/developer-api/newsletter)
- **[API]** **Site and storefront settings.** General, theme, branding, main page, privacy, slug, custom domains and their verification, customer area, customer access policy, activation, communication, storefront, and legal documents, under `/site/*` and `zanfia site …`; a customer's trusted devices under `zanfia clients devices`. The assistant edits titles, texts and the like and asks before switching the site on or off; slug and domains stay dashboard-only. [Learn more](https://zanfia.com/help/developer-api/site)
- **[API]** **AI images and transcription.** `POST /media/ai-images` generates an image into your Media Library and `POST /media/{mediaId}/transcribe` starts a transcription; `zanfia media generate-image --prompt … --confirm` and `zanfia media transcribe <id> --confirm` do the same. Both answer `402` when credits or minutes run out. [Learn more](https://zanfia.com/help/developer-api/media)
- **[Improved]** **CLI: `--json <file>` works with a space.** The global `--json` output switch no longer swallows a command's `--json <file-or-inline>` body option; both spellings (`--json body.json` and `--json=body.json`) work, and a missing file reports the file error. Every leaf command is now documented in the CLI reference, in English and Polish.

## 2026-08-30: Offer stack on checkouts, a next step on the thank-you page, signup tags on free checkouts, and BLIK back on migrated checkouts

[New] [Improved] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-08-30-offer-stack-next-step-signup-tags/

Present what a purchase includes as a numbered stack with values, point buyers to the next offer right after they pay, tag people who sign up through a free checkout, and enable BLIK, Przelewy24 or Klarna on checkouts migrated from the old platform.

## 🛒 Checkout & payments

- **[New]** **Offer stack.** Offers → a paid checkout → *Basics* → *Offer stack*: list the components of the offer (title, one line of description, optional value), reorder them, and choose whether to show the values and the total. The public checkout shows the numbered *What's included* list under the description and a short *You get* recap above the pay button; free checkouts show titles only. The builder shows the total value against the price and warns when the stack looks thin.
- **[New]** **Next step on the thank-you page.** Offer → *After purchase* → *Thank-you page* → *Next step*: none, another offer (picked from your active checkouts, shown with its name and price), your community, or a custom link. The card appears above the button on the status page right after a purchase; it works as a product default and as a per-offer override.
- **[New]** **Tags on signup for free checkouts.** A free checkout's *Basics* tab has *Tags on signup*: everyone who signs up through it gets those tags (re-signups do not duplicate them), and an automation with the *Tag added* trigger starts from that signup. Customers → Segments → the *Opted in, not bought* preset preselects the checkout's tag for that product.
- **[Fixed]** **BLIK, Przelewy24, and Klarna on migrated checkouts.** Checkouts brought over from the old platform could keep these methods switched off with no way to turn them on. Checkout → *Form & UX* → *Payment methods*: click the eye on a hidden method to enable it; in the price modal, checking a method now enables it for that price.
- **[Improved]** **The assistant explains a missing payment method.** Ask "why is there no BLIK on checkout X?" and it names the exact reason (not connected, disabled on the price, card-only billing, currency, hidden on the checkout, or a Stripe capability that is not active), offers the matching fix, and confirms what is offered after the change.

## 👥 Customers & access

- **[Fixed]** **Imported recurring access expires on time.** Recurring access imported from another platform did not end when its period ran out. Such grants now expire on schedule and you get the usual "access ended" notice; imported grants that still bill through a gateway subscription are left to that subscription.
- **[Fixed]** **An extended access period shows the new date.** After *Edit access period* on a Stripe-billed grant, the customer modal, the product hub status pill, and *Next billing* show the date you picked instead of the original period end.
- **[Fixed]** **Course progress counts every lesson.** The progress ring on the customer's course page no longer jumps to 100% after the first lesson opened in a session; it weighs all lessons of the course.

## ✨ Product generator

- **[Improved]** **Questions are routed to the assistant.** Typing a question ("how do I upload my book?") into the product generator shows *That sounds like a question* with an *Ask the assistant* button instead of generating a product; a physical good or software is created as a service offer, never a course about it.
- **[New]** **Tweak and regenerate.** While a generated product is still an untouched draft, its hub shows *Not quite? Tweak and regenerate*: edit the original prompt and get a new product in its place. The previous draft is removed.
- **[Improved]** **Short ideas lead to idea cards.** A one- to three-word idea offers *Show me ideas for this topic* before you generate. The handoff message after generation now depends on the product type (upload the file, write the first article, draft the first issue, check the price and connect payments), and generated copy no longer contains long dashes.

## 🖼️ AI images

- **[Improved]** **Quality tiers and credit quotes follow the image model.** The composer's quality pill shows *Standard / High / Ultra* on quality-tiered models and 1K / 2K / 4K only on resolution-tiered ones, and every credit quote comes from the actual model in use.
- **[Fixed]** **A rejected prompt says so.** When the provider's safety filter refuses a prompt, the failed card says the prompt was rejected and asks you to rephrase it, instead of a generic error.

## 🔧 Also shipped

- **[Fixed]** **Test run of an automation opens for every offer.** The *Test run* window no longer crashes when one of your offers has no name; such offers show their title or address.
- **[Improved]** **Approval cards in Polish for the new assistant actions.** Retrying a failed subscription payment, revoking access in bulk, and switching your site on or off show a Polish approval card with the details filled in.

## 2026-08-28: Optional certificate QR, multi-product access grants, and sold-out prices handled cleanly

[New] [Improved] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-08-28-optional-certificate-qr-multi-product-access-sold-out-prices/

Certificates can drop the verification QR and carry a per-course line, one modal grants or revokes access to several products, an archived client's Stripe subscription can be canceled from the customer page, and sold-out prices are no longer offered at checkout.

Second release of the day, after the [morning batch](https://zanfia.com/help/changelog/2026-08-28-invoice-column-page-jump-installment-coupons).

## 🎓 Certificates

- **[New]** **Verification QR is optional.** Certificates → Templates → a simple template → *Show on certificate* has a *QR verification* switch. Off means the printed certificate carries no QR code; the verification page and link still work for every issued certificate. Existing templates keep the QR on. In the advanced designer you can now delete the QR element as well.
- **[New]** **A custom line per course, e.g. CPD hours.** Course Settings has an *Extra line on the certificate* field, and the simple designer has an *Extra line (per course)* switch that places it on the template. One template can serve courses with different hours or accreditation notes.

## 👥 Customers & access

- **[Improved]** **Grant access to several products at once.** Customer page → Actions → *Grant access* takes one or more products. Price, end-of-access, and community-role overrides stay available when you pick a single product.
- **[Improved]** **Revoke access with a checklist.** *Revoke access* in the Actions menu lists the customer's active grants, all preselected, so you can uncheck what should stay. It replaces the old *Revoke all access* item in the ⋮ menu.
- **[New]** **Cancel the Stripe subscription of an already-archived client.** When access was revoked without canceling the billing, the revoked row on the customer's *Access* tab now offers *Cancel subscription in Stripe*. It stops future charges; it does not refund the current period. Active grants still cancel through the usual archive / change-access flow.
- **[Fixed]** **Renewal links survive an e-mail change.** A customer who opens a renewal link sent before you changed their e-mail can still pay, and the order lands under their current address. Failed-payment e-mails and their renewal link also go to the current address.
- **[Fixed]** **Adding a customer whose login account already exists.** *Add customer*, changing a customer's e-mail, and CSV or audience imports no longer fail with "e-mail already exists" when the person has a leftover login account from before.

## 🛒 Checkout & payments

- **[Fixed]** **Sold-out prices are not offered.** A price variant whose seat limit is reached shows as *sold out* and cannot be selected, including variants that went over their limit through pending orders. An attempt to order one gets a clear "price not available" answer instead of a generic payment error.
- **[Fixed]** **Checkout Builder preview follows your dashboard language.** When neither the checkout, the product, nor your site sets a language, the preview and the *After purchase* mocks use the language of your dashboard instead of always English. An explicitly set language still wins, exactly like the live checkout.
- **[Improved]** **Source URL on conversion events.** Analytics → Traffic & conversions → Events → open a Purchase or InitiateCheckout event to see the page address that was sent to Meta or TikTok, so you can verify URL-based rules without guessing.

## 🤖 Assistant & support

- **[Fixed]** **The assistant stays in your language.** An English conversation no longer drifts into Polish after a quick-reply chip or a one-word turn; the conversation language is pinned for replies and suggested chips alike.
- **[Improved]** **The assistant knows when a price is sold out.** Asked why a payment "doesn't work", it checks seat limits first and points you to the price's availability settings instead of blaming the gateway.
- **[Improved]** **New request status: *On our list* / *Confirmed*.** In Help Center, a feature idea we have read and queued shows *On our list*; a reported issue we have reproduced shows *Confirmed*. Replies on either side keep the status until we move it on.

## 🔧 Also shipped

- **[Improved]** **Failed platform-payment e-mails reach both addresses.** Notices about a failed payment for your Zanfia plan go to the workspace contact e-mail and your account e-mail (once, when they are the same).
- **[Fixed]** **Login on a closed creator platform explains itself.** A customer who tries to log in to a platform whose creator has closed their account sees "this platform is no longer available" instead of a generic "could not send the code" error.

## 2026-08-28: Invoice column on Transactions, direct page jumps on Customers, and instalment coupons fixed

[Improved] [Fixed] [New]  Permalink: https://zanfia.com/help/changelog/2026-08-28-invoice-column-page-jump-installment-coupons/

Every order shows its invoice state at a glance, long customer lists open any page in one request, instalment plans with a coupon bill correctly, and automation runs show exactly what went to your e-mail tool.

## 📈 Sales & customers

- **[Improved]** **Invoice column on Transactions.** Each order now carries an *Invoice* tag next to its status: issued (with the number), not sent, issue error, or none, with the issue-invoice action right in the row. The CSV export's `invoice` column tells the same states apart instead of reporting a failed send as issued.
- **[Improved]** **Jump straight to any page of a long customer list.** Picking page 56 of a several-thousand-row list now loads that page in a single request, instead of walking every page in between under a loading overlay for a minute or more.
- **[Fixed]** **Renewal and test tags on the Pulse purchase list stay visible.** Long product names no longer push the *Renewal* / *Test* tag out of the row.

## 🛒 Checkout & payments

- **[Fixed]** **Instalment plans with a coupon bill every instalment.** A promo code on an instalment purchase used to make Stripe reject the payment schedule, so only the first instalment was charged. Schedules now keep the discount exactly as Stripe applied it, and repeating coupons carry into the remaining instalments.
- **[Improved]** **Meta Purchase events include the unit price per item.** Both the Pixel and the Conversions API now send `item_price` inside `contents` (main product and order bumps), so Meta's catalog and value rules see what each item cost, not only the order total.

## 🤖 Automations & assistant

- **[Improved]** **Run history shows what was handed to your e-mail tool.** In Automations → Runs, expanding an e-mail-integration step lists the contact data that was sent (e-mail, first and last name, list status) and the result per connected account, for test runs and real runs alike.
- **[New]** **New trigger: *Tag added*.** Start an automation the moment a customer receives a chosen tag, whether you add it by hand, in bulk, or from another automation. Tags added during an import do not fire it.
- **[Improved]** **Voice dictation works without AI credits.** The microphone in the creator assistant and editors no longer refuses when your AI credit balance is empty; dictation is part of the platform, not a metered AI feature.

## 🔧 Also shipped

- **[Improved]** **Trial extension requests are tracked in the Help Center.** Asking for more trial days from the banner now files a request you can follow under Help Center → *Account requests*, and the answer lands there too.

## 2026-08-27: Social posts in the Workspace API, CLI, and MCP

[API] [New]  Permalink: https://zanfia.com/help/changelog/2026-08-27-social-posts-api/

Draft, schedule, and publish social posts from your own scripts, the Zanfia CLI, any MCP client, or by asking the creator assistant.

Everything the Social media screen does with posts is now available outside the dashboard, on one shared core.

- **[API]** **Workspace API `/social/*`.** `GET /social/accounts` lists your connected accounts (and which support immediate publishing), `GET /social/posts` and `GET /social/posts/{postId}` read drafts, scheduled and published posts, `POST /social/posts` creates a draft, `POST /social/posts/{postId}/schedule` puts it on the calendar, and `POST /social/posts/{postId}/publish` publishes it right away (LinkedIn today). Two new API key scopes gate it: `social:read` and `social:write`. [Learn more](https://zanfia.com/help/developer-api/social)
- **[API]** **CLI: `zanfia social`.** `zanfia social accounts`, `posts`, `get`, `draft --text "…" --targets linkedin`, `schedule <id> --at 2026-09-01T09:00:00+02:00`, and `publish <id>`. [Learn more](https://zanfia.com/help/developer-cli/commands)
- **[API]** **MCP tools.** `list-social-accounts`, `list-social-posts`, `get-social-post`, `create-social-post`, `schedule-social-post`, and `publish-social-post` for Claude, ChatGPT, Cursor, or any MCP client connected to your workspace. [Learn more](https://zanfia.com/help/developer-mcp/connect)
- **[New]** **Creator assistant.** "Which social accounts do I have connected?", "write a LinkedIn post about X and schedule it for tomorrow at 9:00". Drafting is immediate; scheduling and publishing always show an approval card first.

Posts created this way appear in Marketing → Social media like any other, so you can preview, edit, or reschedule them in the calendar.

## 2026-08-27: Social posts calendar, member DMs on/off, and renewal tracking

[New] [Improved] [Fixed] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-08-27-social-calendar-member-dms-renewal-tracking/

Scheduled social posts get a drag-and-drop calendar with a first comment, communities can switch off private messages between members, access renewals reach your ad platforms as purchases, and the assistant searches the web.

## 📣 Social media

- **[New]** **Calendar for scheduled posts.** Marketing → Social media → *Calendar* with month, week, and list views. Drag a post to another day or a 15-minute slot to reschedule, double-click an empty day to compose for it, *Edit* a scheduled post in place, *Duplicate* any post to drafts. Scheduled community posts show on the same calendar as read-only chips you can toggle.
- **[New]** **First comment.** Add a first comment in the composer; it is posted under your LinkedIn post right after it goes live, also for scheduled posts.
- **[Fixed]** **Scheduled posts no longer sit in the Tasks panel as "queued"** until they actually run.

## 👥 Community

- **[New]** **Private messages between members can be turned off.** Community → Settings → Access & features → *Private messages between members*. When off, member profiles and the directory lose their Message buttons, the member inbox hides the composer, and the mobile app follows. Your own conversations with customers are not affected.
- **[Fixed]** **Activating a disabled member works again.** *Edit member* saves the active flag, and the members list has a one-click *Activate* for disabled members.

## 📊 Tracking & sales

- **[Fixed]** **Access renewals are tracked as purchases.** A renewal of a one-time access period now sends a server-side Purchase to Meta, GA4, TikTok, X, and LinkedIn and shows in Analytics → Traffic & conversions → Events. Meta events carry a `transaction_type` of `purchase` or `renewal` so you can tell them apart.
- **[Fixed]** **Free and 100%-coupon orders keep their attribution.** UTM and click ids for those orders now show in the order details, exports, and the customer's first-touch attribution.
- **[Improved]** **Own-domain SSL badge refreshes itself.** While a certificate is being issued the Domains card re-checks every 30 seconds and says it is automatic - no need to click *Check again* or wait on the page.

## 🤖 Creator assistant

- **[New]** **Web search and offer extraction.** The assistant can search the web and cite what it found, and turn a public sales page into a filled-in product draft ("I'm moving my course from another platform, here is the page") or compare your offer with others.
- **[New]** **Extend a price deadline, cancel a client's subscription.** "Extend this price until the end of September" edits the sale end date in place; "cancel the subscription of julia@…" cancels it at the end of the paid period. Both go through an approval card.

## 🔧 Also shipped

- **[New]** **Social profiles as a brand source.** Paste an Instagram, TikTok, YouTube, or LinkedIn profile wherever a website URL was accepted: Settings → Brand → *Add brand* builds the brand book from the bio and recent posts, and the onboarding Magic Box suggests products tailored to the profile.
- **[Improved]** **Double opt-in confirms on the e-mail link alone.** Opening the confirmation link completes the signup; the button stays only as a fallback for browsers without scripts.
- **[Improved]** **Automation e-mails in the Zanfia layout.** *Send e-mail* steps in automations can use the branded e-mail layout instead of plain HTML - switch it on per step in the builder; existing steps stay as they are.
- **[Fixed]** **Video lessons resume where the customer left off** instead of jumping ahead of the saved position.
- **[Fixed]** **Opening a workflow no longer fails** in workspaces with older checkouts.
- **[Mobile]** **Mobile app.** The back button no longer shows a raw route name on Certificates, Notifications, and the Community hub; the private-messages setting above is respected in the app.

## 2026-08-26: Fixed-date access, ad-level attribution, and bulk access revoke

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-08-26-fixed-date-access-ad-attribution-bulk-revoke/

One-time prices can end on a set date, orders and customers show which Meta campaign and ad brought them, and you can revoke access for a whole filtered customer list in one go.

## 🛒 Checkout & offers

- **[New]** **One-time access until a specific date.** A one-time price now has a third access mode next to lifetime and a fixed duration: *Until a specific date*. Every buyer's access ends on that day, whenever they bought, and the price stops selling after it - ideal for event tickets and cohort deadlines. Offers → price → Access. The API, CLI, and assistant accept `accessUntil` too. [Learn more](https://zanfia.com/help/developer-api/offers)
- **[Improved]** **Removing a plan no longer fails when prices are linked to it.** Prices tied to the removed plan switch to the default plan, and upgrade offers touching it are paused. The confirmation says so before you proceed.
- **[Improved]** **"What's included" on multi-plan checkouts is optional, with a list layout.** Checkout builder → Form & UX → *Package contents* hides the includes list under each price, and *List layout* shows one item per line instead of the comma-joined row.
- **[Improved]** **Country field can be locked, not only hidden.** Form & UX → Country now offers *Visible*, *Hidden*, or *Locked*. Locked shows the assigned country as a read-only field, and browser autofill cannot change it.
- **[Fixed]** **"Welcome back" login on checkout works for every Zanfia account.** Visitors who already have a Zanfia account but never bought from you can now log in with the e-mail code from the checkout banner instead of seeing a failed-send message.
- **[Fixed]** **Checkout consents and Stripe Tax settings apply to every Stripe order.** Some Stripe-connected workspaces fulfilled orders with an outdated copy of their settings, so consent-conditioned automations and marketing opt-ins could stay silent. Every order now uses your current settings.

## 📈 Sales & customers

- **[New]** **Meta campaign and ad names on orders and customers.** Order details show a *Source* block with the campaign and ad that brought the purchase; the customer profile shows the same for the first touch. Both CSV exports carry the names, and the per-checkout Ads tab counts spend only for ads pointing at that checkout, so the ROAS shown is that checkout's own. Names fill in on the next daily sync with Meta.
- **[Improved]** **Click ids in exports and the API.** The customers export gains `fbclid` and `gclid` columns and a "customer added" date range; the orders export carries the first-touch UTM and click-id columns. The API exposes attribution on orders and clients, and `GET /orders/export` returns the same 34 columns as the dashboard CSV. [Learn more](https://zanfia.com/help/developer-api/orders-stats)
- **[New]** **Revoke access for a whole filtered customer list.** Customers → *Bulk actions (all: N)* → *Revoke product access* now runs on the server with a progress bar above the list, so a list of thousands no longer has to be processed in your browser.
- **[Fixed]** **Archived customers are no longer billed again by Stripe.** The archive dialog always shows the *Cancel Stripe subscription* switch for a live subscription (it used to be hidden when the first cycle was free or fully discounted), and a renewal charged for an already archived customer no longer restores their access.

## 🤖 Creator assistant

- **[New]** **Revoke all access on a product from the chat.** Ask which product is filling your client limit and the assistant answers from per-product counts; "revoke access to everyone in this product" produces an approval card and reports how many were revoked and how many were skipped because of a live subscription.
- **[New]** **"Did the purchase reach Meta / GA4?"** The assistant reads your conversion-event log and answers with the delivery status, payload, and provider acknowledgement for a given order, plus a 7-day health verdict per connected integration.
- **[Improved]** **Batch price changes with one approval card.** Editing several prices of a checkout in one request now shows a single card to approve.

## 🔧 Also shipped

- **[Improved]** **Newsletter archive author name.** Newsletter → Settings → Archive → *Author shown on posts* overrides the imported creator name on archived issues.
- **[Fixed]** **Renaming a community product updates the community everywhere**, including the member app's home screen.
- **[Fixed]** **Own-domain verification no longer flags the correct record as a conflict.** The tooltip now tells you which record to delete.
- **[Improved]** **Automation triggers say what they cover.** *New purchase* now states that renewals do not fire it, and the *Access period renewed* trigger has its own description.
- **[Improved]** **AI credits and transcription minutes follow your plan's allowance on every plan.** The "credits reached" banner can be dismissed and links to buying extra credits.

## 2026-08-25: Plan usage alerts, community calendar toggle and lesson chapters in the app

[New] [Improved] [Fixed] [Mobile] [API]  Permalink: https://zanfia.com/help/changelog/2026-08-25-plan-usage-alerts/

Get warned before you hit a plan limit, switch off community events, hide the client counter, lock the checkout country and see video chapters in the mobile app. Plus fixes for renewals, pasted lessons and email language.

## 📊 Plan & billing

- **[New]** **Know before you hit a plan limit.** You now get an email when a
  limit is approaching (around 80%) and when it is reached, for active clients, published
  products, storage, AI credits, transcription minutes and video exports. The dashboard shows a
  banner and a bell notification, and Settings → Usage has a meter per limit (video exports is
  new). Purchased credit and minute packs count toward your balance, so you are not warned while
  you still have purchased credits left.
- **[Improved]** **Change plan straight from the alert.** The banner's "Change
  plan" opens the plan picker, the Usage page names the limits you exceeded and the smallest plan
  that fits, and plans too small for your current usage are disabled with the reason.

## 👥 Community & product pages

- **[New]** **Events (calendar) on/off.** Community → Settings → Access has an
  "Events (calendar)" switch. Off hides the Calendar tab, the calendar section and the "Upcoming
  events" card on the web and in the mobile app; existing events are kept and return when you
  switch it back on.
- **[New]** **Hide the "already joined" counter.** Switch the client counter off
  for one product (Page editor → Automatic blocks → Client counter) or for every product page
  (Storefront builder → Style overrides → Client counter on product pages).
- **[Improved]** **Rename the Owner role.** The built-in Owner community role
  accepts a new name, color and icon; its permissions stay locked.
- **[Fixed]** **Switching direct messages no longer stacks threads.** Opening another
  conversation in the inbox shows one message list, scrolled to the newest message.

## 🛒 Checkout

- **[New]** **Fixed country for checkouts without a country field.** Offer → Form
  & UX: switch off "Country" and pick the country every order should be assigned to (Poland by
  default). Tax, VAT-ID fields and invoice data follow it, and the country cannot be changed by
  the buyer.
- **[Improved]** **Order bump shows the price before the promotion.** A bump pinned
  to a price marked as a promotion shows the old price struck through next to the sale price.
  [Learn more](https://zanfia.com/help/smart-sales/add-an-order-bump)
- **[Fixed]** **Renewal links work after a client's email change.** The renewal checkout
  prefills the client's current address, so installments can be paid after you corrected the
  email.
- **[Fixed]** **Renewal links open on the renewal offer.** The page no longer flashes the
  public price list before the renewal price is selected.
- **[Fixed]** **Clearer payment error messages.** A connection problem now says so, and
  the generic message no longer suggests the seller is at fault.
- **[Fixed]** **Repeated payment notifications from Stripe are ignored.** A redelivered
  payment event no longer re-grants access, re-sends the purchase email or re-runs automations for
  a client you have archived.
- **[Improved]** **Your purchase notifications in the client's email history.** The
  "new purchase", "free signup" and "manual order" emails sent to you now appear in the client's
  email log on the Clients screen.

## 🎓 Courses & video

- **[Fixed]** **Text lessons pasted from Google Docs render correctly.** A lesson with
  bold text, custom font sizes and special characters no longer shows raw HTML to students, and
  font sizes now display on the student view.
- **[Mobile]** **Chapters and moments in the mobile app.** Video lessons with chapters
  list them under the player (Chapters / Moments on the Lesson tab); tapping one jumps the video
  to that time. The app updates itself on the next launch.
- **[Mobile]** **"Watch on YouTube" opens the YouTube app.** Tapping the YouTube logo
  on an embedded video in a lesson or community post opens the app (or the browser) instead of
  failing to load.
- **[Mobile]** **Push notifications register reliably on iOS.** Allowing notifications
  on a fresh install no longer fails on some devices.

## ✉️ Emails & language

- **[Fixed]** **Emails follow your language, whatever the region.** Accounts set to
  en-GB, en-US, French, Arabic or any other non-Polish language now receive English emails, and
  pl-PL receives Polish, across login codes, registration, support replies, invoices, community
  and chat notifications and trial reminders.
- **[Improved]** **The language switch sets your email language too.** Switching
  between Polish and English on app.zanfia.com is remembered for emails, not only for the page.
- **[Improved]** **"Fixed, awaiting release" on support tickets.** When a reported
  problem is fixed and waiting for the next release, the ticket in Help Center says so.
- **[Fixed]** **Logging out from a product page no longer throws an error.**

## 🔌 API

- **[API]** **More client fields in the Workspace API.** `/v1/clients` (list and
  detail) now returns `discordId`, `githubId`, `tagIds`, `emailSubscriptionStatus` and
  `attribution` (first-touch UTM data); `/v1/products/{id}/clients` returns `discordId`,
  `phoneNumber`, `priceId` and `accessStartsAt`. The CLI exposes the same fields.
  [Learn more](https://zanfia.com/help/developer-api/clients)

## 2026-08-24: Express wallets on phones, Tpay refunds, login codes, and community fixes

[Fixed] [New] [Improved] [API]  Permalink: https://zanfia.com/help/changelog/2026-08-24-checkout-wallets-and-community-fixes/

Apple Pay and Google Pay both show on narrow screens, Tpay refunds finalize, a resent login code keeps the previous one valid, the Assistant lists buyers on request, and the Community API is on the public domain.

## 🛒 Checkout & sales

- **[Fixed]** **Apple Pay and Google Pay both visible on phones.** On narrow screens the
  checkout shows both wallet buttons stacked instead of hiding one behind a "See more" link that
  could not be tapped before accepting the consents. On iPhone, iPad and Mac, Apple Pay comes
  first.
- **[Fixed]** **Order bumps on subscription checkouts charge the price shown.** A bump
  with a promotional price was billed at its old price on subscription purchases; the charge now
  matches the checkout and the invoice.
- **[Fixed]** **BLIK errors ask to retry.** A rejected BLIK code shows "check the code
  and try again" instead of a generic contact-the-seller message.
- **[Fixed]** **Tpay refunds complete.** Refunding an order paid through Tpay is now
  finalized on Zanfia's side and the client is archived, instead of the refund being reported as
  not visible.
- **[Fixed]** **Coupon code listed for card orders.** One-time card orders paid with a
  promo code now show the code on Transactions.
- **[Fixed]** **GA4 no longer double-counts purchases.** With both the browser and the
  server-side GA4 integration enabled, each purchase is reported as one user and one transaction.
- **[Fixed]** **Facebook previews show your cover image.** Shared storefront and product
  links use an optimized cover, so Facebook renders the picture even when the original file is
  very large.

## 👥 Clients, community & account

- **[Fixed]** **Resending a login code keeps the previous one valid.** Customers who
  requested a second code can still sign in with the first email they received.
- **[Fixed]** **Communities load again for all members in the mobile app.** Some members
  of long-running communities saw "Nothing here" in the app; their community list is back.
- **[Fixed]** **Message recipients in "count only" communities.** Starting a new inbox
  message lists members even when the member directory shows only a count.
- **[Fixed]** **Changing your account email updates your community profile.** Your
  member profile in every community follows the new address.
- **[Fixed]** **Welcome emails for access granted through the API follow the client's
  language.** The English version is fully English, including the plain-text part.
- **[Improved]** **iPhone photos (HEIC) convert automatically.** HEIC images added
  to community posts are converted to JPEG on upload, so they display for everyone.

## 🤖 Assistant & automations

- **[New]** **Ask the Assistant for buyer lists.** "List the emails of everyone who
  bought anything in the last 30 days for under 200 zł" returns a ready-to-copy list. Date
  windows, product and amount filters, and first-time buyers are supported.
- **[Improved]** **Test runs with real data.** The automation builder's test run
  opens a form prefilled with your details and lets you pick the product, checkout, price or form,
  so the exact published trigger runs with controlled data.
- **[Improved]** **Better Assistant answers** about client tags, giving existing
  buyers access to a new product (through plan bundles), and payment-method order in the
  checkout. When the Assistant needs to ask you something back, the question now shows up instead
  of an error.

## 🔌 API & CLI

- **[API]** **Community API on the public domain and `npx zanfia`.** The Community API
  is reachable at `api.zanfia.com/community`, and the CLI can be run as `npx zanfia` (the package
  stays `@zanfia/cli`). [Learn more](https://zanfia.com/help/developer-cli/quickstart)

## 2026-08-22: Clickable video timestamps, drip that pauses with access, and a round of fixes

[New] [Improved] [Fixed] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-08-22-course-drip-video-timestamps-and-fixes/

Timestamps in lesson text jump to that moment in the video, dripped content no longer unlocks while a customer's access is paused, plus fixes across checkout, Kit, certificates, and billing.

## 📚 Courses

- **[New]** **Timestamps in lessons are clickable and shareable.** Write `12:34` (or `1:02:15`) in a lesson description and it becomes a link that jumps the video to that moment. Each timestamp has its own URL, so customers can share or bookmark a specific point in a lesson.
- **[Improved]** **Dripped content pauses while access is paused.** Time-based drip now counts only the days a customer actually had access. If a subscription lapses and the customer returns later, they pick up where they left off, with no lessons unlocked for the gap. Progress, completed lessons, and certificates stay untouched.
- **[Fixed]** **Lesson durations stay in sync.** After re-uploading or refreshing a video, the duration shown on the lesson and in the course overview updates correctly instead of going stale or empty.
- **[Fixed]** **Decorative images on certificates stay static.** Images added to a certificate template are no longer treated as fillable fields in the generated PDF.

## 📱 Mobile app

- **[Mobile]** **Files attached to lessons open in the app.** File embeds in lesson content render as links customers can open.
- **[Mobile]** **Hosted video plays reliably.** Lessons with hosted video start and keep playing in the native player; previously some videos failed to authorize.

## 🛒 Checkout and sales

- **[Fixed]** **Legal documents keep the customer in the right cart.** Opening terms or a privacy policy from a checkout and coming back returns the customer to the same checkout they had selected.
- **[Fixed]** **Abandoned carts clear after a later purchase.** When a customer who abandoned a cart later buys the same product, the abandoned entry disappears from the Dashboard and is no longer eligible for a recovery email.
- **[Fixed]** **Transactions paging with filters.** Jumping directly to a page in Transactions with a date or status filter now loads the right rows, including multi-page jumps.
- **[Fixed]** **Test purchases show up in the test view.** Transactions → test mode now lists simulated purchases by default, and the confirmation emails for a simulated purchase state the access period of the price you selected.
- **[Improved]** **Better Meta ads matching.** Purchase events sent to Meta carry the canonical checkout URL and an explicit product content type, which helps catalog and custom-conversion matching.

## ⚙️ Automations and integrations

- **[Fixed]** **Kit (ConvertKit) receives last names.** Subscribers added through a form or tag action now get their surname in Kit's `last_name` field.
- **[Fixed]** **Kit tag actions are reliable, and failures are visible.** Tagging adds the contact first when needed, and if Kit rejects the request the step shows as failed in the workflow run history with the reason, instead of silently doing nothing.

## 🏠 Site and community

- **[Fixed]** **Community settings save correctly.** Turning off options such as video uploads in a community now persists.
- **[Fixed]** **Community posts fit on phones.** Long posts no longer stretch the page sideways on narrow screens in the web customer area.
- **[Fixed]** **Product type badges in Polish.** Storefront cards show product types in the site language instead of English.
- **[Fixed]** **Your favicon shows on the storefront.** The favicon set for your site now appears on the storefront home page, including sites with a custom HTML home page.

## 💳 Your Zanfia billing

- **[Fixed]** **Clearer subscription timeline.** Periods paid outside Zanfia are labeled as such (no misleading -100%), the next payment date points at the next billed period, and period extensions show a readable label instead of an internal code.

## 2026-08-22: Account sharing protection

[New] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-08-22-account-sharing-protection/

Limit how many devices each customer can use on your site and in the mobile app, choose what happens when the limit is reached, and remove a customer's device yourself.

Customers who share one login with friends now have a limit. **Account sharing protection** lets you cap the number of active devices per customer, across your site and the Zanfia mobile app.

- **[New]** **Set a device limit.** Turn it on in Your site → Account sharing protection and choose the number of active devices allowed per customer. It is off by default, so nothing changes until you enable it.
- **[New]** **Decide what happens at the limit.** Three strategies: **Adaptive protection** (the first replacement is instant, the second needs 24 hours, the third 7 days, anything further needs you; the sequence resets after 30 quiet days), **Always allow replacement** (customers swap devices themselves), or **Creator approval only** (customers cannot swap devices themselves; you remove a device from their profile).
- **[New]** **Manage a customer's devices.** Open a customer → Devices to see active installations with their last activity, remove a single device, or reset all of them. A removed device loses access to your content within seconds, without waiting for the customer to reload.
- **[Mobile]** **Works in the mobile app.** The app applies the same limit and shows the customer a clear "device limit reached" screen with the replacement options you configured. Delivered as an in-app update, no store download needed.

## 2026-08-19: Reliable abandoned-cart recovery and a renewal date for workflows

[Improved] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-08-19-checkout-recovery-and-renewal-date/

Abandoned-cart emails stop when the customer comes back, workflows can use the current access period end date, and Stripe-side cancellations show up in your activity.

## 🛒 Checkout and abandoned carts

- **[Fixed]** **Abandoned-cart recovery only reaches customers who actually left.** A checkout that stays open for a long time no longer counts as abandoned, and a recovery email is skipped when the customer has resumed the checkout or completed the purchase in the meantime. Each abandonment is recorded once, so counters on the Dashboard stay accurate.
- **[Fixed]** **Checkout works for owners of several workspaces.** Customers buying a product from a creator who runs more than one workspace no longer get a false "product inactive" error when starting a card or BLIK payment.

## ⚙️ Workflow automations

- **[Improved]** **New variable: current access period end date.** Use `{{currentAccessPeriodEndDate}}` in workflow emails and actions to show when the customer's current access or paid period ends (for example `31.12.2026`). The "access period renewed" trigger now starts your workflows as soon as the renewal is saved, so the date is always the fresh one.
- **[Improved]** **Variable hints in the builder.** Hover over any variable in the workflow builder to see what it contains and an example value.

## 💳 Subscriptions and sales

- **[Improved]** **Cancellations made in Stripe show up in Zanfia.** When a subscriber cancels or resumes through Stripe's own portal, the change appears in the customer's activity and triggers your cancellation notification, exactly once.
- **[Fixed]** **Clients export shows the price variant for older purchases.** The CSV export on a product's client list now fills in the historical price variant (for example a 12- or 24-month plan) for access granted before price snapshots were introduced.
- **[Fixed]** **Fakturownia connection errors are clear.** Connecting Fakturownia with an invalid or expired token now shows an "invalid credentials" message instead of a generic error.

## 📚 Courses and knowledge base

- **[Fixed]** **PDF files in knowledge-base articles are visible again.** Files embedded in published articles render as downloadable links for your customers.

## 2026-08-17: Customer messaging controls and email alerts for direct messages

[New] [Improved] [Fixed] [API] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-08-17-client-messages-and-email-notifications/

Turn incoming customer messages off, customers get an email when you write to them, copy price IDs from the checkout builder, and a round of fixes.

## 💬 Customer messaging

- **[New]** **Turn off incoming customer messages.** Sites → Client area has a new
  "Client messaging" switch (also in the Inbox header): when off, customers see your thread
  read-only with a notice, while you can still write and broadcast.
- **[New]** **Email alerts for direct messages.** When you message a customer from
  the Inbox or through the assistant, they get an email with a link to the conversation, one per
  unseen-activity episode rather than one per message. Broadcasts have a "Notify recipients by
  email" checkbox, on by default, for audiences up to 1000 recipients; the broadcast dialog warns
  when a workspace has more than 5000 customers.
- **[Fixed]** **Community member count.** The sidebar count shows active members, not
  everyone who ever joined.

## 🛒 Checkout and sales

- **[Improved]** **Copy price ID.** Checkout builder → Prices → ⋯ menu → "Copy price
  ID" copies the price id that webhooks and the API use.
- **[Fixed]** **Event date on the thank-you page.** With "Show event details on the
  success page" off, the thank-you page hides the date as well as the join button.
- **[Fixed]** **Checkout editor preview on the first image upload.** Uploading the first
  gallery image in the checkout editor no longer crashes the preview.
- **[Fixed]** **Payment method update for older subscriptions.** Customers can update
  their card on subscriptions created before payment details were stored on the access record.
- **[Fixed]** **Customer email history after an address change.** The customer card's
  email history includes messages sent to the customer's previous addresses.
- **[Improved]** **GTM: begin_checkout and purchase events.** Checkouts push
  `begin_checkout` alongside `view_cart`, and a custom success redirect waits briefly so the
  `purchase` event is not lost.
- **[Fixed]** **VAT rate on Zanfia invoices.** Zanfia's own invoices to you (subscription,
  AI credits) print VAT as 23% instead of 22.99%.

## ⚙️ Automations

- **[Fixed]** **"Edit HTML" in the email step.** The raw-HTML edit dialog in a workflow
  "Send email" step opens above the step dialog and is editable.

## 🔌 API

- **[API]** **Renewal webhooks carry the Zanfia price id.**
  `product.ProductSubscriptionRenewed` webhooks, renewal orders and notifications always carry the
  Zanfia `price_…` id, even when the Stripe price was remapped.

## 🤖 Assistant and mobile

- **[Improved]** **The assistant reads links you paste.** Paste a public URL and ask
  about it; the assistant fetches the page (up to 3 per message) and answers from its content. It
  can also set a free trial period on a free offer and draft the end-of-access email automation,
  and approval cards for publishing lessons are now in your language.
- **[Mobile]** **Communities load after a long background.** Reopening the iOS app after
  hours no longer fails to load communities.

## 2026-08-16: Bulk transcript export, certificate fix, and automation sender names

[New] [Fixed] [Improved] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-08-16-transcript-export-and-fixes/

Download all course transcripts as one file, certificates render their design again, automation emails come from your name, and more fixes.

## 🎬 Media and courses

- **[New]** **Export transcripts in bulk.** Media Library → Transcripts → Export:
  tick a course, a module or single lessons and download one Markdown file with all selected
  transcripts under course/module/lesson headings.
- **[Fixed]** **Certificate templates render fully.** Templates from the simple designer
  showed blank headings, labels, logo and signature in previews and issued PDFs; they render
  again. Templates saved earlier need one re-save in the editor.
- **[Improved]** **Audio files in file products.** The "Add files" picker on a
  downloads product now offers audio files.

## ⚙️ Automations and checkout

- **[Fixed]** **Automation emails from your name.** Workflow emails with no sender name
  set now go out from your platform name with your contact email as Reply-To, instead of "Zanfia".
- **[Fixed]** **Free signups without a payment provider.** Free checkouts work on
  workspaces that never connected a payment provider.
- **[Fixed]** **Expired promo prices are not auto-selected.** A checkout whose price has a
  lapsed time limit no longer pre-selects it, so buyers are not offered a price that cannot be
  paid.
- **[Fixed]** **Form embeds in your language.** Standalone form embeds render system
  texts (button, consents) in the workspace language instead of English.
- **[Fixed]** **Save buttons that stayed disabled.** The Site → privacy documents page
  keeps your edits and its Save button active while other saves happen, and picking a palette
  swatch in the checkout Theme tab enables Save.
- **[Fixed]** **Presets on product and thank-you pages.** Public product pages and
  thank-you pages honor checkout theme presets, not only per-checkout overrides.

## 🏘️ Community

- **[Fixed]** **Admin count.** The "Admins" chip and stat in the customer area count only
  roles with real management or moderation permissions; label-only custom roles no longer count.
- **[Fixed]** **Deleted communities disappear from lists.** A deleted community is no
  longer listed in the customer area or the mobile app.

## 🤖 Assistant and mobile

- **[Improved]** **Undo assistant edits.** Say "undo that change" after the assistant
  edits a lesson, article, product, offer or post and it restores the previous values exactly.
  Follow-up questions in the same thread are also faster.
- **[Mobile]** **Knowledge-base articles refresh.** Returning to the app after it was in
  the background reloads stale articles automatically.

## 2026-08-14: Marketing consent from checkout, renewal invoices, and editor fixes

[New] [Fixed] [Improved] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-08-14-marketing-consent-and-editor-fixes/

A checkout consent can subscribe buyers to marketing emails, invoices are issued on renewals with "Invoice as option", and a batch of editor, Discord and mobile fixes.

## 🛒 Checkout and sales

- **[New]** **Checkout consent that subscribes to marketing emails.** In the checkout
  builder → Consents, edit a consent and tick "Subscribes to marketing emails": buyers who accept
  it (free, discounted or paid purchases) get marketing status Subscribed on their customer
  profile. Customers who unsubscribed are never re-subscribed.
- **[Fixed]** **Invoices on renewals with "Invoice as option".** Subscription renewal
  invoices were skipped for some long-standing subscribers once "Invoice as option" was enabled;
  they are issued again.
- **[Fixed]** **Renewals show the last reminder.** Operations → Renewals shows the date of
  the last reminder sent instead of always "no reminder sent".
- **[Fixed]** **Default checkout theme preset.** A workspace default theme preset now
  applies to checkouts without their own theme, and the checkout builder preview shows the preset
  colors immediately (it used to show the legacy yellow until you opened the Theme tab).
- **[Fixed]** **Saving consents on a new workspace.** The consents drawer Save button
  works on workspaces that never saved checkout settings before.
- **[Fixed]** **AI credit pack invoices.** A credit pack purchase is now always recorded
  once and its invoice issued.

## ✍️ Courses and editor

- **[Fixed]** **Course chapters.** Adding a chapter no longer trips a false "chapters must
  not overlap" error, and start/end times can be typed by hand (they format when you leave the
  field).
- **[Fixed]** **Image as the last block.** When an image is the last block in a lesson, a
  paragraph line appears under it so the cursor is not trapped.
- **[Fixed]** **"Turn into → Code" keeps your content.** Converting a lesson to a code
  block no longer wipes video embeds; converting back restores them. Unlisted Vimeo links
  (`vimeo.com/{id}/{hash}`) now play, and video embeds have hover Edit link / Remove controls.
- **[Mobile]** **Lesson images in the app.** Course lesson images inserted as inline HTML
  render in the mobile app, at the size set in the editor.
- **[Improved]** **Dark mode polish in the panel.** Settings cards, Import CSV,
  customer detail tabs, the community role dialog, product files and more no
  longer show white boxes or light borders in dark mode.

## 🏘️ Community and integrations

- **[Improved]** **New-post push notifications on by default.** Members get a push
  notification for new posts unless they turn it off; in-app notifications stay on, email stays
  off unless the member opts in.
- **[Fixed]** **Discord member connection.** After a member authorizes Discord they land
  on your platform's settings page (not a 404) and are added to the server and roles right away.

## 🤖 Assistant

- **[Improved]** **Faster replies.** The assistant loads only the tools relevant to
  the screen you are on and opens more on demand, so replies start sooner.

## 2026-08-13: Redesigned purchases and billing in the customer area

[New] [Improved] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-08-13-purchases-and-billing-redesign/

Customers manage subscriptions, cards and installments in one place, plus fixes for community emails, sales reports and discount codes.

- **[New]** **Purchases & billing in the customer area.** The customer's Purchases
  page is now "Purchases & billing" with tabs: Subscriptions & renewals (subscriptions,
  installments and one-time renewals as separate groups), One-time purchases, Free, and Payment
  history (every charged order, with invoice links where issued). "Manage" opens an inline panel
  with cancel/resume, card update and unsubscribe; inactive purchases sit dimmed under "Inactive".
  A new Settings → Billing screen lists active subscriptions and payment methods. Canceled
  subscriptions show their end date with a Resume button; fully paid installment plans show
  "Paid in full".
- **[Improved]** **Product page shows purchase details only.** The customer's product
  page no longer mixes content with billing: content opens from header buttons (Open archive,
  Watch course, Files, Knowledge base) as full-page views.
- **[Fixed]** **Knowledge-base subscribers can cancel.** Purchases → Manage on a
  knowledge-base subscription opens the management page with cancel controls instead of
  redirecting to the content.
- **[Fixed]** **Images in community notification emails.** Images resized or aligned in
  the post editor now render as images in new-post, comment and mention emails instead of raw
  code.
- **[Improved]** **Plain-language email delivery problems.** Customer → History
  describes delivery problems (bounce, suppressed address, failed) in plain words instead of raw
  provider errors.
- **[Fixed]** **Sales report with order bumps.** Orders with order bumps counted the order
  total once per bump in the sales report; each order now counts once, and a refund subtracts
  once.
- **[Fixed]** **Percentage discount codes and currency.** Percentage codes are no longer
  rejected at payment because of a currency mismatch stored on the code (code validation and the
  payment step now agree).
- **[Fixed]** **"Open your files" on the thank-you page.** The button is hidden when a
  file product has no files yet, and shows an error message if the download fails.
- **[Improved]** **The assistant checks email delivery.** Ask the assistant whether a
  customer received an email (for example a renewal reminder) and it reads the actual delivery
  log instead of guessing. A pasted screenshot the assistant cannot read now gets a plain reply
  instead of an error.

## 2026-08-12: Customer filters, automatic Tpay refunds, and a community archive setting

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-08-12-crm-filters-and-tpay-refunds/

Filter customers by what they bought, refund Tpay orders with one click, hide pre-purchase posts from new members, plus new Workspace API endpoints.

## 👥 Customers and sales

- **[New]** **Customer filters by products, subscription and spend.** Customers →
  Filter: pick specific products with Has any / Has all / Has none (for example bought the course
  but not the community), marketing-email status (subscribed, unsubscribed, pending, never
  captured), purchased / never purchased, and a total-spent range. Filters run on the server and
  Export CSV respects them. The product filter matches direct purchases; products included in a
  bundle are not matched.
- **[New]** **Automatic Tpay refunds.** Archiving a client with "Refund last
  payment" on a Tpay-paid order now refunds the buyer through Tpay automatically, the same way PayU
  already worked. The order flips to Refunded with the Tpay refund id.
- **[Improved]** **Price variant in the access export.** The product Access CSV has
  a new `priceVariant` column showing which price the client bought (label or amount plus access
  period, for example "369.00 PLN / 24 month").
- **[Fixed]** **Discount codes limited to selected prices.** A code pinned to one price no
  longer discounts the product's other prices on Stripe checkouts.
- **[Fixed]** **Renewal links for deleted prices.** A renewal link whose original price
  was removed now offers the product's current public prices instead of "product unavailable".
- **[Fixed]** **"Edit and issue invoice" reaches your provider.** Corrected buyer data
  from Orders → Edit and issue invoice is now actually sent to your invoicing provider when
  reissuing.
- **[Fixed]** **Checkout views no longer inflated by embeds.** Drawer and modal checkouts
  embedded with the Zanfia script load on first open instead of on page load, so "Checkout views"
  counts real opens.

## 🏘️ Community and customer area

- **[New]** **Archive from purchase date.** Community → Settings → Access has a new
  "Archive from purchase date" toggle: members see only posts published after their current access
  started (feed, channels, search, unread badges, deep links and the weekly digest). Renewals keep
  the boundary; owners, staff and moderators see everything.
- **[New]** **Community as your main page.** Site settings → General → Main page
  is now a visual picker: Storefront, User dashboard or Community (public communities open as a
  guest feed, private ones ask to log in).
- **[Improved]** **Library cards open the product directly.** In the customer
  library, clicking a course, community, newsletter or knowledge-base card goes straight into it;
  the quick-look preview moved to a small eye button on hover. File products open a preview with
  "Download all", and the product files tab got a "Download all" button too.
- **[Fixed]** **@mentions in communities with a hidden member list.** Mentioning members
  works again in communities where the member directory is hidden.
- **[Fixed]** **Entering a community from the library.** Entering works even when the
  product's address differs from the community's.
- **[Fixed]** **Storage limit errors say why.** When an upload hits the storage limit you
  now see "Storage limit reached: X GB of Y GB used" instead of a generic upload error.

## ✉️ Email and checkout

- **[New]** **Email signature in workspace settings.** Settings → Workspace has a
  new "Email signature" card: the multi-line sign-off used in purchase confirmations and other
  customer emails (it was not editable before).
- **[Improved]** **Disconnect LinkedIn.** Settings → Social media has a Disconnect
  button for LinkedIn, next to Reconnect.
- **[Fixed]** **Dark-mode checkout descriptions.** Pasted text with a near-black or
  near-white color no longer disappears on dark checkout themes; it inherits the theme colors.
- **[Fixed]** **Login codes and product pages across two platforms.** If you run two
  platforms on one account, customer login codes and `/p/` product pages resolve on the platform
  they were requested from.
- **[Fixed]** **Course preview navigation.** Previous/next lesson buttons work when
  previewing an unpublished course from the editor.

## 🔌 Workspace API

- **[API]** **Product access endpoints for CRM sync.**
  `GET /clients/{clientId}/product-accesses` lists every access a client holds;
  `GET /products/{productId}/clients` pages through a product's clients with
  `accessStatus=active|revoked|expired|all`. Rows carry a stable `accessId`, `updatedAt`, plan,
  payment type, dates, source and order ids. [Learn more](https://zanfia.com/help/developer-api/clients)
- **[API]** **Lesson thumbnails.**
  `PUT /products/{productId}/course/lessons/{lessonId}/thumbnail` sets or clears a lesson thumbnail
  from a Media Library image or a URL and updates the video player poster for hosted video lessons;
  also available as the `set-lesson-thumbnail` MCP tool. [Learn more](https://zanfia.com/help/developer-api/courses)

## 2026-08-11: Custom product labels, video embed codes, and editor fixes

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-08-11-product-type-labels-and-editor-fixes/

Rename what a product is called for your customers, embed Media Library videos anywhere, and a round of editor, upload, checkout and community fixes.

## 📦 Products and media

- **[New]** **Product type label you can edit any time.** Products → your product →
  Settings → General has a new "Product type label" field (for example "Webinar" instead of
  "Course"). Labeled products get their own section and filter chip in the customer library, their
  own chip in the community Materials tab, and their own group in the product list's type filter.
- **[New]** **Embed Media Library videos on any website.** Open a video in the Media
  Library and use Embed: a responsive player snippet with a "Copy embed code" button, ready to paste
  into any page's HTML.
- **[Improved]** **Access export with separate start and end dates.** The product
  Access → Export CSV now carries `accessStart` and `accessEnd` as separate columns instead of one
  combined period, so the list filters cleanly in Excel or Sheets.

## ✍️ Editor

- **[Fixed]** **Slash commands open the Media Library.** Typing `/` and picking Image,
  Video or File in a lesson or knowledge-base editor opens the Media Library picker instead of
  asking for a raw URL.
- **[Fixed]** **Centered text stays centered for students.** Text and headings aligned in
  the lesson editor render with the same alignment in the course view.
- **[Fixed]** **Callout emoji picker and `:` autocomplete.** The callout block offers the
  full searchable emoji library, and typing `:fire` suggests emoji inline. The non-working "AI"
  entry was removed from the slash menu.
- **[Fixed]** **Uploads that used to fail.** Direct file uploads in the lesson editor
  complete again (they used to reach 100% and disappear), `.m4a` audio lessons play in Firefox, and
  file names with accented characters uploaded from macOS display correctly.

## 🛒 Checkout

- **[Fixed]** **Express payments in embedded checkouts.** Apple Pay, Google Pay and Link
  buttons now work in checkouts embedded on external sites with the Zanfia script.
- **[Fixed]** **Checkout under strict Safari settings.** The checkout no longer shows an
  error screen in Safari with "Block all cookies" enabled or inside sandboxed iframes.

## 🏘️ Community

- **[Improved]** **Clear hint when gamification is off.** The Overview cards for
  activity, levels and ranking explain they are built on XP and offer a one-click way to enable
  gamification, instead of a misleading "no activity".
- **[Fixed]** **Circle connection on new workspaces.** Connecting Circle no longer fails on
  a workspace that has never connected any integration.

## 🔌 API and MCP

- **[API]** **AI agents for community members.** Members can mint an API key in
  Settings → Developer on your platform and connect an MCP client (Claude, ChatGPT or any agent)
  with the ready-made `claude mcp add` command shown next to the key. The member server exposes
  only what members can do themselves: read channels and posts, write their own posts, comments
  and messages, and only in communities where member API access is enabled. [Learn more](https://zanfia.com/help/developer-mcp/connect)
- **[API]** **Updates feed and notifications for agents.**
  `GET /communities/{id}/updates?since=` returns everything new since a cursor in one call (posts,
  comments, chat), and `GET /communities/{id}/notifications` exposes the member's notification
  feed; both are also MCP tools.
- **[API]** **Rate limits.** Member keys: 60 reads and 10 writes per minute, up to 10
  active keys per workspace. Workspace keys: 300 reads and 120 writes per minute. Responses carry
  `RateLimit-*` headers and `Retry-After` on 429.

## 2026-08-10: Knowledge base editor upgrades, billing data in exports, clearer card declines

[New] [Improved] [Fixed] [API]  Permalink: https://zanfia.com/help/changelog/2026-08-10-knowledge-base-editor-exports-fixes/

Cover images, drag-and-drop and category pages in the knowledge base editor, invoice data in CSV exports and the API, Microsoft Clarity and Hotjar on your checkout, and a round of checkout, automation and assistant fixes.

## 📚 Knowledge base editor

- **[New]** **Cover image per article.** Set, change or remove an article's cover from the Media Library or by upload, right under the category row. The list keeps showing the thumbnail.
- **[New]** **Drag-and-drop in the outline.** Reorder categories, reorder articles within a category, and move articles between categories by dragging them in the left outline.
- **[New]** **Category pages and logged-in Preview.** Clicking a category name opens its page: rename it, see its articles, add a new one. The Preview button opens the article on your platform already logged in.
- **[Fixed]** **Thumbnails and attachments are back.** Article thumbnails, cover images, attachment counts and download links from earlier articles render again in the list and the editor.

## 📊 Sales, clients and exports

- **[Improved]** **Billing data in exports and the API.** The Customers CSV has an "Invoice data" column group (company, VAT id, address), the Orders CSV carries the same fields from the purchase, and `GET /clients/{id}` and `GET /orders/{id}` return an `invoiceData` object. [Learn more](https://zanfia.com/help/developer-api/clients)
- **[Fixed]** **"All time" in Sales analytics starts at your real account start.** For accounts migrated from Zanfia 1.0 the preset began at the migration date and hid older orders; it now starts at your registration date.
- **[Fixed]** **Imported recurring access is not shown as a live subscription.** Clients imported with an access end date now read "Active · access until …" instead of "renews", and no saved-card panel is shown when there is no subscription behind it.
- **[Fixed]** **Downloads content tab loads on direct links.** Opening a downloads product's Content tab from a link or global search no longer shows an empty list.
- **[Improved]** **Merging clients when one of them has a live subscription.** Customers → Actions → Merge clients now goes through when only one of the two records holds an active subscription; the subscription moves to the surviving record untouched. The merge is blocked only when both records have a live subscription for the same product.
- **[Improved]** **Client e-mail changes reach Stripe.** Changing a client's e-mail address, or merging two clients, also updates the customer in your connected Stripe account, so receipts and invoices follow the new address.

## 🛒 Checkout and payments

- **[New]** **Microsoft Clarity and Hotjar on your checkout.** Connect either tool with its project ID (Clarity) or site ID (Hotjar) in Settings → Integrations → Analytics and set it as the default, or pick it for a single offer in the offer's Analytics tab. You get session recordings and heatmaps of your checkout, thank-you, product and storefront pages; the recording starts only after the visitor accepts analytics cookies.
- **[Fixed]** **Card declines show a clear message.** When a card is declined, the buyer sees a specific "card declined" message instead of a generic error, so they can try another card.
- **[Fixed]** **Renamed products update their checkouts.** Renaming a product now updates the product name shown on every checkout that sells it, including purchase e-mails.
- **[Fixed]** **Installment plans with a one-time coupon.** A coupon limited to one use applied to an installment plan no longer breaks the remaining payments or the access it should grant.
- **[Improved]** **Trials can be cancelled by the client.** A client on a trial of a subscription with committed payment cycles can cancel from their account; the trial then ends at its scheduled date with no charge.
- **[Improved]** **Access-ending reminder 14 days ahead for longer access periods.** The 14-day reminder before access ends now applies to every access period of at least 3 months, not only yearly ones.
- **[Fixed]** **Checkouts on accounts with several workspaces.** A storefront or checkout on a custom domain now resolves to the workspace that owns that site, so accounts with more than one workspace no longer see "product does not exist" on a valid link.

## ⚙️ Automations

- **[New]** **Restore the published version of a workflow.** In the workflow builder you can discard an unpublished draft and go back to the published graph, with a confirmation that lists what will be dropped.
- **[Fixed]** **Price conditions pick real prices.** The "price" condition now selects from your actual prices (by label) and a workflow with an unrecognized price cannot be published or tested until it is fixed.
- **[Fixed]** **Workflow e-mails render as written.** E-mails composed in the workflow editor no longer show raw HTML tags, stray backslashes or literal link markup, and abandoned-cart test runs fill in sample product values. The Test button on abandoned-cart automations works again.
- **[Fixed]** **Discord invitation e-mails have a working button.** The "Connect with Discord" e-mail sent by Discord automations links to the authorization page again.

## 🎓 Courses

- **[Fixed]** **Duplicating a course copies quiz questions.** A duplicated course used to get empty quizzes; the questions now come along.

## 🤖 Creator Assistant

- **[Improved]** **More reliable conversations.** Sending twice, or from two tabs, no longer starts two runs; an interrupted or failed reply is shown as such in the thread instead of disappearing, and Retry does not duplicate your message.
- **[Improved]** **Real answers about your plan and gateways.** The assistant reads your plan and trial status and which payment gateways are connected, instead of guessing.

## 2026-07-31: PayU installments, bulk community actions, API on api.zanfia.com

[New] [Improved] [API] [Fixed] [Mobile]  Permalink: https://zanfia.com/help/changelog/2026-07-31-payu-installments-community-bulk-actions/

Installments for PayU checkouts, bulk member removal with a date filter in communities, usage windows aligned with your billing cycle, and the public API on its own domain.

## 🛒 Checkout and billing

- **[New]** **Installments with PayU (Raty PayU).** Checkouts paid through PayU can now offer installments, the same way Tpay does: a "Raty" tile shows on one-time PLN prices within the merchant's installment range. Checkouts created from today show it by default; on older ones enable "Raty (PayU)" in the checkout builder → Form & UX → Payment methods.
- **[Improved]** **AI credits and transcription minutes follow your billing cycle.** The monthly allowance now resets on your subscription's renewal day instead of the first of the calendar month, so Settings → Usage matches what you pay for.
- **[Fixed]** **Hidden-price links work on migrated checkouts.** Links to a specific price (`?variant=…`) on checkouts migrated from Zanfia 1.0 opened a "product not available" message; they now load the right price.
- **[Fixed]** **Deleting a product that was part of a removed bundle.** A product could not be deleted when a bundle that once included it had already been removed; the delete now goes through.

## 👥 Community

- **[New]** **Remove many members at once.** The community Members tab has row selection with a "Remove from community" action (also available per row in the row menu). Members who pay through a subscription are listed as skipped so you do not cancel anyone by accident.
- **[New]** **Filter members by the date they joined.** The filter panel has an "Added between" date range that narrows the list, the role and status counts, and the CSV export.

## 🎬 Video and transcripts

- **[Fixed]** **Transcript page follows the playhead again.** On Media → Transcripts, the spoken word is highlighted as the video plays, and the search box jumps to the first match and shows a match counter.

## 🔌 API and integrations

- **[API]** **Public API on api.zanfia.com.** The Workspace API is served from `https://api.zanfia.com`, with the Community API under `https://api.zanfia.com/community`. Existing base URLs keep working. [Learn more](https://zanfia.com/help/developer-api/overview)
- **[Fixed]** **MailerLite tags for new subscribers.** The "add tag" action in automations now creates the subscriber in MailerLite first when it does not exist yet, so the tag is applied instead of failing.

## 📱 Mobile and Help Center

- **[Fixed]** **Communities you were added to appear in the app.** A platform where you are only a community member (for example a moderator added by the creator, without a purchase) now shows up in My Library in the Zanfia app.
- **[Improved]** **Help Center accepts PDFs.** You can attach PDF files (up to 25 MB) to support tickets, alongside images and video.

## 2026-07-30: Zanfia 2.0 is live

[New] [Improved] [API] [Mobile] [Fixed]  Permalink: https://zanfia.com/help/changelog/2026-07-30-zanfia-2-0-is-live/

The new Zanfia is here - workspaces, the Creator Assistant, a public API with CLI and MCP, smarter checkouts and automations, and a mobile app for your customers.

Zanfia 2.0 is the biggest release in Zanfia's history. Every creator account now runs on the new platform: a rebuilt dashboard, a rebuilt customer portal, and a new engine underneath both. This entry sums up what changed at a high level; from now on the changelog lists each change as it ships.

## 🚀 What is new in 2.0

- **[New]** **Workspaces.** Your products, customers, sales and settings now live in a workspace. One login can hold several workspaces (one per brand or business) and you switch between them from the account menu. Team members get their own access per workspace.
- **[New]** **Creator Assistant.** An AI assistant built into the dashboard that knows your account: it reads your products, orders, clients and settings, drafts content, transcribes videos, and navigates you to the right screen. Actions that change data ask for your approval first.
- **[New]** **Workspace API, CLI and MCP.** Everything in the dashboard is now reachable from code: a public REST API with scoped API keys, the `zanfia` command-line tool, and an MCP server so Claude, ChatGPT and other agents can operate your workspace. [Learn more](https://zanfia.com/help/developer-api/overview)
- **[New]** **New customer portal.** Courses, communities, knowledge bases, downloads and newsletters are delivered from one portal on your domain, with a redesigned course player, lesson notes, quizzes and certificates.
- **[New]** **Zanfia mobile app.** Your customers can use their courses and communities in the Zanfia app for iPhone and Android. The portal now shows store badges and a "Get the app" entry in the profile menu.
- **[New]** **In-app Help Center.** Report a problem or propose a feature straight from the dashboard (account menu → Help Center), attach screenshots, and follow the conversation with our team in the same thread. Replies also arrive by e-mail.
- **[New]** **AI credits and transcription minutes.** AI features and video transcription draw on a monthly allowance included in your plan; extra packs are available in Settings → Usage.

## 🛒 Checkout and payments

- **[New]** **Installments with Tpay (Raty Pekao).** Checkouts paid through Tpay can offer an installment option: the "Raty" tile appears on one-time PLN prices that fit the merchant's installment range. Control it in the checkout builder → Form & UX → Payment methods.
- **[New]** **Subscriptions with a limited number of payments.** A subscription price can now end after N billing cycles (for example three monthly payments), with an option to allow cancellation before the last one. Set it in the price editor.
- **[Improved]** **Free checkouts count in analytics.** Free sign-ups now create checkout sessions and conversions like paid ones, and send a Lead event to Meta, TikTok and GA4 when conversion tracking is on.
- **[Improved]** **Certificates on partial completion and in bulk.** A course can issue its certificate at a chosen completion percentage (Settings → Certificate), and you can issue certificates to many clients at once from the Clients list.
- **[Fixed]** **Prices on PayU-only accounts stay visible.** Adding or editing a price on an account without Stripe (PayU, Tpay, Paynow, Przelewy24, PayPal) no longer hides it from the public checkout.
- **[Fixed]** **Cancel at period end works as labeled.** In a client's "Cancel subscription" dialog, turning off "Revoke access" now really keeps access until the end of the paid period instead of revoking it immediately.
- **[Fixed]** **Order bump totals and prices display correctly.** The client's last-order amount, order rows with a bump, and price formats on the offers and prices tabs all show the right values.

## ⚙️ Automations

- **[New]** **Retry failed steps of a workflow run.** On Workflows → Runs, a failed or partial run has a "Retry failed steps" button: only the failed steps rerun, delays already elapsed are skipped, and the run does not count twice against your monthly limit.
- **[Improved]** **Webhook steps show what was sent and received.** Expand a webhook step in a run to see the request body and the response with its status, and retry a single failed delivery from the same place.

## 🎓 Courses, community and content

- **[New]** **Scheduled community posts.** Admins can schedule a post for a future date and time from the composer; scheduled posts wait in a strip above the feed, where you can cancel them, and members get the usual notification when they go live.
- **[Improved]** **Audio lessons everywhere.** "Audio lesson" is now offered in every "Add lesson" menu of the course editor.
- **[Improved]** **Lesson descriptions and links.** Descriptions in the course player render in a clean card with tighter spacing, external links open in a new tab, and links in private messages are clickable.
- **[Fixed]** **Vimeo lessons play reliably.** The first click on play no longer pauses itself, and switching between Vimeo lessons loads the new video instead of the previous one.
- **[Fixed]** **Video lesson description shows without a video.** A video lesson with no file attached (or an external video) now shows its description tab content.
- **[Improved]** **Bulk client removal revokes access in one go.** Deleting several clients at once now archives their active access (and cancels subscriptions) in the same action, so nobody is skipped.

## 📣 Marketing

- **[New]** **Social posts: LinkedIn.** Connect a LinkedIn account in Marketing → Social posts, compose text and image posts, schedule them or publish right away. Other networks are coming soon.
