September 2026
A look saved before the design system update used to get dropped the next time the bot was read or saved. It is upgraded to the current look instead.
Footer links and the hide-branding setting survive that upgrade. Available on every plan.
Included in this release
A look saved before the design system update is now upgraded to the current one when the bot is read or saved, instead of being discarded. Footer links and the hide-branding setting survive the same way.
Unread on the card. Process Board cards show a dot when a linked inbox conversation has an unread inbound message. A board filter lists only the unattended leads.
Contact fields from the Intake Bot. When contact creation is on, custom bot fields can map to workspace contact fields, or create the contact field if it does not exist yet. The value is saved on the contact and can fill a WhatsApp template as {{custom_key}}.
Start a bot from Inbox. On Business and Enterprise, the thread control can start a published Intake Bot on an open WhatsApp session. Retry or return still resumes the intake in progress. Starting a different bot abandons the current one.
Included in this release
Process Board cards show a dot when a linked inbox conversation has an unread inbound message. A board filter lists only unattended cases.
When contact creation is enabled on an intake bot, custom bot fields can be mapped to workspace contact fields (and created from the bot if they do not exist yet). Values are saved on the contact and available in WhatsApp templates as {{custom_key}}.
The Inbox thread control can start a published Intake Bot on an open WhatsApp session. Retry or return still resume the in-flight intake. Starting a different bot abandons the current one.
Destination wizard. Adding an action block now starts in a wizard by default. Name the app, connect it, accept or reject the native field mapping, see extra keys you still need to create in the destination, and send a real test with dummy data. Manual setup is still there if you want it.
Amounts on cards. A Process Board can track a sales amount on each card in one currency and show the column total next to the card count. That number is what your team entered. ioZen does not compute return on ad spend.
Available on every plan.
Included in this release
Adding an action block now starts with a wizard. Name the app, connect it, accept or reject native field mapping, see extra keys to create in the destination, and send a real test record with dummy data.
A Process Board can track a sales amount on each card in one currency and show the column total next to the card count.
Strict Validation and Socratic Negotiation can now store only the clean value that meets the field goal, instead of the full reply. Extract Value also asks for a missing part when the goal needs it, for example a first and last name.
WhatsApp settings are split by number. A left sidebar holds routing, the business profile, Click-to-WhatsApp conversions, and tracked links for that number. Templates and billing stay on the workspace. The ads section and the Intake Bot marketing settings now show whether Click-to-WhatsApp conversions can actually send, including when submission tracking on the bot is off.
Click-to-WhatsApp attribution is in beta. The clean-value change is on every plan. The WhatsApp settings change is Business and Enterprise.
Included in this release
Strict Validation and Socratic Negotiation can now store only the clean value that meets the field goal, instead of the full reply. Extract Value also asks for missing parts when the goal requires them, for example first and last name.
WhatsApp settings now use a left sidebar with per-number pages for routing, business profile, Click-to-WhatsApp conversions, and tracked links. Templates and billing stay workspace-wide. The ads section and the Intake Bot marketing settings now show whether Click-to-WhatsApp conversions can actually send, including when the bot's submission tracking is off.
Website match still recommends looks. Image beside stays as an upload you provide. ioZen no longer generates paid visual-pack art.
Available on every plan.
Included in this release
Website match still recommends looks. Image beside stays as an upload. ioZen no longer generates paid visual-pack art.
This is beta. Do not treat it as generally available.
On Business and Enterprise, an Autonomous Agent Block can recommend concrete options from the Knowledge you attached, instead of asking another question, once the lead has said what they need. It asks at most one question per message. The loop stops after three model calls in a turn.
You can start from a sales advisor profile. The catalog copies the objective, skills, outcomes, and guidance onto the block. Later catalog edits do not change live blocks.
The add-menu card is off on every live plan. The loop itself is still beta.
Included in this release
Autonomous Agent Blocks now run an objective-driven loop with a hard cap of three model calls per turn. Understand flags objections before any new question. Discovery probes, semantic exit, prior-answer context, and transcript dedupe stay on this type. Custom outcome values are validated in code. When the block has knowledge and the respondent has stated a need, the agent recommends concrete options from that knowledge instead of asking another question, and asks at most one question per message. The add-menu card is on in development and off on every plan.
Start an Autonomous Agent Block from a sales advisor profile. The catalog copies objective, skills, outcomes, and guidance onto the block. Later catalog edits do not change live blocks. Compose applies profile guidance after the system contract and before custom instructions and Voice Pack.
Earlier answers in the objective. An Agent Block objective can reference preceding Intake Bot fields that are not private. The editor inserts the variable at the cursor. Web, test, and channel conversations resolve it from the submission so far.
Discovery keeps what they volunteered. The block can keep a relevant detail the lead offered, such as an anniversary or who they are shopping for, without asking an extra question. Advisors and Collectors keep that context passively. Extra follow-up questions are limited to Autonomous blocks, which are beta. Probe answers show in submission details as self-reported context. Routing uses derived intelligence, not the raw note.
Brand Kit apply is one action. Apply writes the look onto the bot. There is no merge or replace choice. Welcome text and the avatar stay. Look edits save on their own. Brand Kit is two steps: edit the look with the live preview, then use it. Drafts and looks that no Intake Bot uses can be deleted.
Also in this release: website match shows a live wait time and does not reopen the previous draft’s looks, the header logo and the conversation icon are separate, Image beside asks for a 16:9 photo, phones show only the chat, option buttons use the brand color, and you can put a plate behind the logo.
Agent Block changes are Business and Enterprise. Brand Kit changes are on every plan.
Included in this release
Agent Block objectives can now reference preceding non-private Intake Bot fields. The editor inserts field variables at the cursor, and web, test, and channel conversations resolve them from the available submission context.
Agent Blocks can now keep relevant details a respondent volunteers, such as an anniversary or who they are shopping for, without asking an extra question. Advisors and Collectors can keep passive context, while extra follow-up questions are limited to Autonomous blocks. Probe answers and observations appear in submission details while remaining self-reported secondary context in intelligence, exports, and webhooks.
Apply writes the Brand Kit look onto the bot. There is no merge or replace choice. Welcome text and avatar stay.
Look edits in Brand Kit save automatically, the same way the Intake Bot Design tab already does.
Brand Kit is two steps: edit the look with the live preview, then use it on Intake Bots. Drafts and looks that no Intake Bot uses can be deleted.
Match my website now keeps a live elapsed time while it reads the site, and it no longer sits on a finished bar until you refresh. A new draft does not reopen the previous draft's recommended looks.
Header and conversation share one mark (uploaded logo or Lucide/emoji). Color and shape apply to the plate behind it, not as a crop of the file.
Image beside now asks for a 16:9 landscape photo (at least 1280 × 720, PNG JPEG or WebP, under 900 KB). Photos that miss the crop are rejected with a plain reason.
Image beside is chat first. Wide screens can keep a photo on the left. The live question stays in the conversation, and phones show only the chat. A painted header still carries the brand mark.
Option buttons use the brand color as picked. The Type your answer field sits on a lifted surface with a brand border, a brand caret, and a readable placeholder.
Colors includes Behind the logo: none, light, dark, or a custom plate. The mark stays bare until you pick one.
Collect and Instruct are no longer two modes you pick as separate products. They are one Agent Block. Choose a structured conversation or an agent-led one, define typed outputs, and attach grounded documents and decision tables. Discovery notes are self-reported context in Submission Intelligence, exports, webhooks, and CRM handoff. Routing does not read the raw note.
New Agent Block authoring requires Business or Enterprise. Blocks you already published on Pro keep serving.
The same release cleaned up looks. Backgrounds paint on the conversation itself, including phones. Website match stores a square icon when the header logo is a wordmark, so the brand name is not printed twice. The all-at-once form layout is gone. A look is a conversation, one question at a time, or a single full-page question. Typefaces are hosted Google Fonts. The Advanced drawer that held licensed fonts, page images, and paid visual packs is gone: match a site or pick a starting look, then edit and apply it.
Included in this release
Collect and Instruct collapse into one Agent Block. Choose Structured or Agent-led conversation style, define typed outputs, attach grounded Documents and deterministic Decision tables, and use Agent-led Discovery as self-reported secondary context in Submission Intelligence, its summary, JSON, CSV, XLSX, webhooks, and action/CRM handoff. Agent Block authoring requires Business or Enterprise; existing published Pro blocks keep serving.
The background choice behind a conversation (flat, color fade, soft glow, see-through, grid lines, color blend) now paints the conversation surface itself, so it is visible in the preview and on phones instead of only in the desktop margin, and the light-mode tints are strong enough to tell apart. Each option draws its own miniature in the editor. Website match now compares the site's header logo against its square icon and stores the icon when the logo turns out to be a wordmark, so the brand name is not printed twice next to the bot name. Match my website sits in a closed box and returns to it after you use a look or cancel.
The Brand Kit Advanced drawer is gone. Operators no longer upload a licensed font or page image, pick a directed composition there, or generate a paid visual pack. Match a website or pick a starting look, then edit the look and apply it.
Choosing a look no longer means scrolling past every control. Colors, type, feel, flow, and fine-tune open one at a time and keep their change count when closed, the look catalog opens as a dialog instead of holding a grid open beside the editor, and your own font, composition shells, the paid visual pack, and notes moved into an Advanced drawer. Website match now lists its three recommendations as flat miniatures, holds the progress bar short of full until the looks are actually on screen, and generated visual pack art is compressed to fit its size budget instead of being rejected.
The all-at-once form layout is gone. A look can now be a conversation, one question at a time, or a single full-page question, and the website analyzer can no longer propose a form. In the one-question and full-page layouts the question and its answer sit together, centered in the step, so a single question no longer leaves an empty band above the input.
The side-by-side conversation now measures the conversation card itself before splitting. The Brand Kit phone preview no longer draws two crushed columns, a live bot on a large screen now matches the desktop preview, and the current question lives on the brand pane instead of being asked again as a bubble. Width choices (edge to edge, centered, narrow) show up in the preview.
Brand Kit and Intake Bot Design now pick from hosted Google Fonts by name, including Inter, Space Grotesk, Playfair Display, Lora, and IBM Plex Mono. Website match still maps the site stack onto that set.
Brand Kit and Intake Bot Design now show colors, typeface, corners, spacing, how questions arrive, and how answers look. Size, composition, progress, header, and motion sit under Advanced. Website match still writes the full look.
Brand Kit is three steps: choose the look, check it, put it live. One action bar names the next step and what it changes.
The Intake Bot design tab and Brand Kit share the same editor, the same starting-look catalog, and the same wording. Each option is a miniature of the real thing. Letter spacing, elevation, and borders moved into a fine-tune drawer. A look that drifts from a preset is reported as custom, names the preset it came from, and can be named.
Available on every plan. A later release removed the all-at-once form and the paid visual pack. This note is what shipped on this date.
Included in this release
Brand Kit is now three steps: choose the look, check it, put it live. One action bar names the single next step and what it changes. The Intake Bot design tab and the Brand Kit share the same editor, the same starting-look catalog, and the same wording, with every option shown as a miniature of the real thing instead of a term. Expert tokens such as letter spacing, elevation, and borders moved into a fine-tune drawer. Looks that drift from a preset are reported as custom, name the preset they came from, and can be named.
Brand Kit starting looks now include technical, institutional, and organic character. You can match a public website without a beta flag. Type includes serif, mono, and display, with letter spacing and label case. Button color, answer layout, and transparent, grid, or mesh surfaces apply on the public Intake Bot.
The same day also added an all-at-once form layout and an immersive page. The September 15 release removed the all-at-once form. What remains is a conversation, one question at a time, or a single full-page question.
Available on every plan.
Included in this release
Brand Kit starting looks now include technical, institutional, and organic character. Operators can match a public website without a beta flag. Type includes serif, mono, and display families with letter spacing and label case. Button colour, answer layout, and transparent, grid, or mesh surfaces apply on the public Intake Bot.
Intake Bots can now collect on a full form or an immersive branded page, using the same validation and submit path as conversation. Operators can upload a licensed WOFF2 font and a background image they own. Those assets travel with a FlowApp copy.
When a lead asks about more than one topic in a single message, the Intake Bot searches each topic on its own and combines the passages that apply. One well-matched category no longer hides an answer that exists for the other part.
Business and Enterprise.
Included in this release
When a respondent asks about multiple independent topics in one message, the Intake Bot now searches each topic separately and combines the relevant passages. One well-matched category no longer hides an answer available for another part of the question.
The Knowledge library, and Agent Block answers grounded in it, moved to Business and Enterprise. Free and Pro can still open Knowledge from the sidebar and see an upgrade wall. Documents and advisor turns you already attached keep answering.
On this date, Collect mode was still on Pro. The September 15 release then folded Collect and Instruct into one Agent Block, and new authoring requires Business or Enterprise. Published Pro blocks still serve.
A follow-up that asks for another option searches again from the earlier questions and returns a different matching passage when the documents have one.
Included in this release
The Knowledge library and Agent Block Instruct (advisor and answer-then-redirect) are now on Business and Enterprise. Free and Pro can still open Knowledge from the sidebar and see an upgrade wall. Existing attached documents and Instruct turns keep answering. Collect mode stays on Pro.
When a respondent asks for another option after a Knowledge answer, the Intake Bot searches again from their earlier questions and returns a different matching passage when the connected documents have one. It no longer repeats the first answer or says it has no information when another cited place exists.
Each connected WhatsApp number has a business profile editor in Integrations. Change the photo, About, description, email, address, up to two websites, and the category without opening Meta. The preview updates as you type and saves on its own. The photo publishes to the WhatsApp business profile.
The display name is still verified by Meta and is not edited here.
Business and Enterprise.
Included in this release
Each connected WhatsApp number now has a business profile editor in Integrations. Change the photo, About, description, email, address, websites, and category without opening Meta. The preview updates as you type and saves on its own. Photo upload uses Kapso's resumable ingest, then publishes to the WhatsApp business profile.
Create reusable Markdown documents and collections in a shared workspace library. Draft changes stay out of live conversations until you publish. Connect the published document to Agent Blocks.
A usage map shows every Intake Bot and Agent Block using a document, including use through a collection. ioZen finds supporting passages by keyword and by meaning, shows the evidence, and falls back to keyword search when meaning-based search is unavailable.
The September 11 release then limited new Knowledge authoring to Business and Enterprise. Documents that already existed keep serving. Business includes 500 documents. Enterprise is unlimited. Archived documents do not count.
Included in this release
Create reusable Markdown documents and collections in a shared workspace library, keep draft changes out of live conversations, and connect published content to Agent Blocks. See every Intake Bot and Agent Block using a document, including use through a collection. ioZen finds supporting passages by keyword and meaning, shows the evidence it found, and falls back to keyword search when meaning-based search is unavailable.
Outcomes on a phase. A Process Board phase can record one outcome the first time a lead enters it: purchase, meeting scheduled, or a named custom event, with an optional value and currency. ioZen writes that first-party event once. Moving the same lead into that phase again does not write another. This is not a stored return on ad spend.
Campaign import. A new WhatsApp campaign can import contacts, tag them, and save a phone-ready segment as the audience. Campaigns target a saved segment, filters, or a simple search. Business and Enterprise.
Click-to-WhatsApp, in beta. Threads that start from a Meta Click-to-WhatsApp ad keep the referral and click ID so source analytics can group them. Organic WhatsApp stays unattributed. This stays beta until a live Test Events check is completed.
Also. Each WhatsApp number can publish a tracked link. Configured Google Ads connections send conversions through Data Manager. Draft and published Intake Bots both count toward the plan limit. Archived bots do not, and they cannot be restored while you are at the cap.
Included in this release
A Process Board phase can record one outcome the first time a case enters it: purchase, meeting scheduled, or a named custom event, with optional value and currency. ioZen writes one first-party lifecycle event. Moving the same case into that phase again does not write another. Network sends follow configured platform credentials and do not depend on Intake Bot On Payment or On Meeting Booked flags. If no submission is found, only the first-party event is recorded. Test cards send to Meta Test Events only when a test sink is ready.
New campaign can open the Contact Center import wizard. The imported rows are tagged and saved as a phone-ready segment, then selected as the campaign audience. Campaigns target contacts only: saved segment, filters, or a simple search.
Google Ads conversion delivery now uses Data Manager for configured connections. ioZen sends one click ID plus available hashed customer data, validates setup without ingesting a test conversion, and keeps eligible legacy Ads connections available without duplicate Google delivery.
maxIntakeBots counts draft and published bots. Archived bots stay free and cannot be restored at cap. Duplicate and FlowApp copy respect the same limit as create.
WhatsApp conversations that start from a Meta Click-to-WhatsApp ad now keep the referral and click ID. The Intake Bot submission is stamped so source analytics can group those cases. Organic WhatsApp stays unattributed. Optionally, each number can send server-side Meta business-messaging conversions (LeadSubmitted, Purchase) to the WABA-linked dataset using the raw click ID and an optional Test Events code. Meta attributes those events for 7 days from the click. This is beta until a live Test Events check is completed.
Each WhatsApp number can now publish first-party /l/[slug] links. A click stores UTMs and click IDs, then opens WhatsApp with a short reference marker that is removed before the conversation is stored. A surviving token is a deterministic match and can reach ad networks. A 10-minute unique fallback is a first-party estimate only. Click-to-WhatsApp referrals still take precedence. Phone is not a LinkedIn match key; capture email in the Intake Bot or keep li_fat_id.
Outreach campaigns can target a saved contact segment or contact filters. Template variables resolve per contact from contact fields or custom fields, with a fallback. Before you send, create reviews the eligible audience.
Business and Enterprise. Marketing sends need a recorded opt-in.
Included in this release
Outreach campaigns can target a saved contact segment or contact filters. Template variables resolve per contact from contact or custom fields, with a fallback. Create reviews the eligible audience before send.
Inbox and contact cards can open a WhatsApp thread with a number that has never written, using a template Meta has approved. Marketing sends need a recorded opt-in.
Business and Enterprise can also send a WhatsApp campaign to a segment. The send stops if number quality drops.
One thread stays one thread after the 24-hour window, which the next day’s note covers in more detail. This release is the send.
Included in this release
Inbox and contact cards can now open a WhatsApp thread with a number that has never written, using an approved template. Marketing sends require a recorded opt-in. Business plans also get Outreach campaigns on Kapso Broadcasts, with a watchman that stops the send if number health drops.
WhatsApp inbox, case, and contact threads stay on one conversation after the 24-hour window closes or a template is sent. History no longer splits into a new thread each day.
Business and Enterprise.
Included in this release
WhatsApp inbox, case, and contact threads stay on one conversation after the 24-hour window closes or a template is sent. History no longer splits into a new thread each day.
August 2026
Payment failure. Workspace owners get an email as soon as a subscription payment fails, with the retry date and a link to update the card, before the plan is canceled. Billing settings keeps a notice if the plan was downgraded. Your data and purchased credits stay.
Plan changes. Changing plans updates the subscription you already have. If the card is declined, you stay on the current plan until the invoice is paid.
WhatsApp on the card and the contact. A case card lists WhatsApp and Intake Bot conversations linked to its contacts. A contact profile opens those threads in a Messages tab, with the same reply and return-to-bot rules as Team Inbox. Business and Enterprise.
Included in this release
Workspace owners now get an email as soon as a subscription payment fails, with the retry date and a link to update the card, instead of only hearing about it after the plan is canceled. Billing settings shows a notice explaining an automatic downgrade and a history of payment issues and plan changes. Data and purchased credits are unaffected by a downgrade.
A case card now lists WhatsApp and Intake Bot conversations linked to its contacts or submissions. Open a thread from the Messages tab to read history and reply with the same composer, session window, and credit rules as the Team Inbox.
A contact profile now opens linked WhatsApp threads in a Messages tab next to Activity. One thread opens inline; several show a list first. Reply, return to bot, and session rules match the Team Inbox.
Changing plans now always updates your existing subscription instead of ever starting a second one, so a workspace can no longer be billed twice or have an old subscription cancel the plan it is paying for. An upgrade takes effect once its charge clears; if the card is declined you are taken straight to the invoice and stay on your current plan until it is paid. Downgrades apply immediately and credit the unused time to your next invoice.
GoHighLevel. Workspaces can connect GoHighLevel from Integrations and push contacts, opportunities, tags, and notes from Intake Bot action blocks. The connected sub-account is stored on connect, so builders do not paste a location id.
Phone on WhatsApp. When an Intake Bot maps a phone field to the contact, a WhatsApp conversation fills that field from the sender’s number and does not ask it. The same published bot still asks for the number on the web chat. Business and Enterprise for WhatsApp.
Signed-in app pages stay in English and Spanish, so the browser does not translate them in place. Public Intake Bots and docs still can. Admins can store a display name and logo on a Composio toolkit. That setting is not a catalog on this site.
Included in this release
Admin Integrations now stores display name, logo, bilingual descriptions, auth scheme, and scoping keys on the toolkit setting. A new toolkit no longer needs a code change when Composio already covers it.
The app shell was served as lang="en" on every route, including /es, so Chrome offered to translate the interface into Spanish. Once translation was on, the browser replaced text nodes in place and the next interface update failed to reconcile them, showing a generic error screen. The action behind it had usually already succeeded on the server, so testing an ad platform connection could report an error even though the test passed. Authenticated routes are now marked as not translatable because they are already available in English and Spanish; public Intake Bots and documentation remain translatable.
Workspaces can connect GoHighLevel from Integrations and push contacts, opportunities, tags, and notes from Intake Bot action blocks. The connected sub-account is stored on connect so builders do not paste a location id.
When an Intake Bot maps a phone field to the contact, a WhatsApp conversation fills that field from the sender's number and does not ask it. The same published bot still asks for the number on the web chat. The number lands on the contact, the record, and the Process Board card through the existing submission pipeline.
Templates. Business and Enterprise can install curated utility templates or write their own, wait for Meta to approve them, and send them from Team Inbox after the 24-hour window closes. An Intake Bot can optionally send one of those templates when a WhatsApp intake goes quiet. The contact’s reply reopens the bot. That follow-up is capped at one or two attempts and billed like any other template. It is not an open-ended nurture sequence.
Webhook logs. Webhooks keep a per-attempt delivery log (status, HTTP code, duration) in the dashboard and the API. Failed deliveries can be sent again with one click. An endpoint can subscribe to specific Intake Bots instead of the whole workspace. After 10 failures in a row the endpoint pauses and workspace admins get an email with a resume link. Pro and above.
Custom plan checkout. Negotiated Enterprise plans can collect a monthly USD price through Stripe Checkout. Owners finish payment setup themselves and can update the card or view invoices without changing the negotiated plan. Manual invoice and bank transfer remain available.
Included in this release
Custom plans can now collect a negotiated monthly USD price through Stripe Checkout. Workspace owners complete payment setup themselves and can update their card or view invoices without changing or canceling the negotiated plan. Manual invoice and bank-transfer billing remain available.
Webhooks now keep a per-attempt delivery log (status, HTTP code, duration) visible in the dashboard and the API, and failed deliveries can be redelivered with one click. Endpoints can subscribe to specific Intake Bots instead of the whole workspace. When an endpoint fails 10 times in a row it is paused automatically and workspace admins get an email with a resume link. The v1 API adds PATCH and test endpoints for webhooks, date filters when listing submissions, a Retry-After header on rate limits, and every event now carries an api_version field.
Business and Enterprise workspaces can install curated utility templates or write their own, wait for Meta approval, then send them from Team Inbox after the 24-hour window closes. Intake Bots can optionally fire one of those templates when a WhatsApp intake goes quiet. Meta starts billing service (free-form) messages on 2026-10-01 at each market's utility rate, so a utility template outside the window will cost the same as a reply inside it. Marketing templates stay about 3x that rate.
Pasting a Google Calendar appointment link, including the short calendar.app.google URL, into an embed CTA now opens the booking page inside the modal. Short links are resolved to the long embeddable URL when you save them. Links that still cannot be framed keep the open-in-new-tab fallback.
A location pin shared from WhatsApp is stored as coordinates, the same shape the web chat stores, so the map and record fields show the answer. If WhatsApp attaches a place name, the coordinates are kept too. Pins stored before this fix still render as a location in the Data tab. WhatsApp location is Business and Enterprise. The calendar embed is on every plan.
Included in this release
Pasting a Google Calendar appointment link (including the short calendar.app.google URL) into an embed CTA now opens the booking page inside the modal. Short links are resolved to the long embeddable URL when the author saves them. Links that still cannot be framed keep the existing open-in-new-tab fallback.
A location pin shared from WhatsApp reached the conversation but was stored as plain "lat,lng" text, so the submission's Data tab showed "Invalid location data" and records left the field empty. Pins are now saved as coordinates, the same shape the web chat stores, so the map, the coordinate link, and record fields all show the answer. When WhatsApp attaches a place name to the pin the coordinates are kept too, instead of being replaced by the name. Submissions stored before this fix still render as a location in the Data tab.
The Intake Bot delivery health panel now names why a case has no traffic source, warns when a send job is stuck pending or a loaded pixel is missing its shared event ID, and labels Google Analytics Measurement Protocol rows as posted rather than accepted. A 2xx does not mean the credentials or the payload were valid. A conversion that exhausts its retries also sends an error alert.
Intake Bots can upload completed cases to Google Ads as offline click conversions using the captured click ID and hashed user data. GA4 Measurement Protocol stays available for analytics events. The two do not fire for the same conversion action.
On Business and Enterprise, Intake Bot analytics groups submissions by last-touch source, campaign, and campaign id, with volume and completion rate. A workspace view rolls the same fields up across every Intake Bot, with meeting counts from lifecycle events and a named reason for every unattributed case. There is no value, CPA, or ROAS column. The product does not hold ad spend.
The public submissions API returns the same attribution fields the in-app tab shows. Pro and above for the API and for Google upload. Business and Enterprise for the analytics tables.
Included in this release
The Intake Bot delivery health panel now names why cases have no traffic source, warns when a send job is stuck pending or a loaded pixel is missing its shared event ID, and labels Google Analytics Measurement Protocol rows as posted rather than accepted (a 2xx does not mean the credentials or payload were valid). A conversion that exhausts its QStash retries also sends an error alert.
Intake Bots can upload completed cases to Google Ads as offline click conversions using the captured gclid (or gbraid / wbraid) and hashed user data. GA4 Measurement Protocol stays available for analytics events. The two never fire for the same conversion action. Delivery health treats a Google Ads accept as verified and no longer labels Google as accepted-unverified.
The Intake Bot Analytics tab now groups submissions by last-touch utm_source, utm_campaign, and utm_id, with volume and completion rate per source. Lower-volume sources roll into Other, while cases with no UTM (including WhatsApp and API) remain Unattributed, so the table always adds up.
GET submission list and detail on the v1 API now return marketing attribution: a nested attribution object (UTMs, click IDs, pixel cookies) plus referrer, landing_page, embed_type, geo, and channel. The same fields the in-app Attribution tab shows.
A workspace Analytics page now rolls last-touch utm_source, utm_campaign, and utm_id up across every Intake Bot, with meeting counts from lifecycle events and a named reason for every unattributed case (WhatsApp, API, capture off, blocked pixel, or direct/organic). There is no value, CPA, or ROAS column: the product does not hold ad spend, and no purchase emitter exists yet.
Intake Bot marketing settings now show whether conversion events from the last 30 days reached each ad platform: accepted, failed, and skipped counts, the most recent rejection reason, and how many completed cases produced no conversion event. Click ID and pixel cookie coverage are in the same panel, so a pixel that stops loading is visible without comparing dashboards by hand.
The TikTok Pixel can load on published Intake Bot pages again. The page policy had been blocking analytics.tiktok.com, so browser-side events never left. Server-side Events API delivery was already fine.
WhatsApp file questions can collect one document per field and run AI Document Extraction. The bot acknowledges the file, pauses while it reads, then sends one summary with Yes and Fix. Confirmed answers are skipped. Unread or corrected child fields are asked one at a time. Model a front and a back as two fields. WhatsApp is Business and Enterprise. Document extraction is Pro and above. Extraction uses plan AI credits. Bot messages use purchased credits.
Included in this release
Intake Bot marketing settings now show whether conversion events from the last 30 days actually reached each ad platform: accepted, failed and skipped counts per platform, the most recent rejection reason, and how many completed cases produced no conversion event at all. It also reports click ID and pixel cookie coverage, so a pixel that stops loading in the browser is visible without comparing dashboards by hand.
The Content Security Policy on Intake Bot pages did not allow analytics.tiktok.com, so the TikTok Pixel's transport script was blocked by the browser. The inline bootstrap still ran and still accepted track calls, which made the block invisible: no page views reached TikTok, the first-party _ttp cookie was never set, and browser-side SubmitForm conversions never sent. Server-side Events API delivery was unaffected. The origin is now allowed, and a test fails the build if any pixel references an origin the policy omits.
Intake Bots on WhatsApp can now collect one document per file question and run AI Document Extraction. The bot acknowledges the file and pauses while it reads, then sends one summary with Yes and Fix options. Yes skips high-confidence extracted child answers. Fix clears those child answers and asks them again while keeping the file and extraction provenance. Low-confidence or failed fields are asked normally, and failed or timed-out extraction skips confirmation. While reading, the bot sends one nudge, then stays silent until resume. Model a front and back document as two fields. Requires Business or Enterprise for WhatsApp and Pro or above for AI Document Extraction. Extraction uses plan AI credits; bot messages use purchased credits.
The Usage page now meters plan credits and purchased credits separately. WhatsApp messages always use purchased credits, and Meta plus bridge fees show as one WhatsApp row. The breakdown matches your billing period, not a calendar month.
Available on every plan.
Included in this release
The Usage page now meters plan credits and purchased credits on their own. WhatsApp messages always use purchased credits, and Meta plus bridge fees show as one WhatsApp row. The breakdown matches your billing period, not a calendar month.
Four additions that work together: a way to total answers into a score, and a smarter Record Lookup field to feed it.
Calculated fields. A hidden number field can now total a group of other fields tagged with a shared score group: sum, average, min, max, or count. Unanswered items in the group are excluded from the total and flagged, so a routing rule can require a complete score before acting on it. Optional bands attach a label like “low” or “high” to ranges of the total.
Live score display. A content block can interpolate that running total, and its band, mid-conversation with {{field_name}} and {{field_name.band}}. The display isn’t saved; the server recomputes the canonical value at submit, on web and WhatsApp alike.
Lookup carry values. A Record Lookup field can now copy other columns from the matched row onto the submission, for example a numeric score sitting behind a Likert-scale label. The stored answer stays the label the respondent picked; the carried value resolves on the server and writes nothing if the label matches more than one row.
Lookup row filters. A Record Lookup field can be scoped to the rows matching a column value, so one shared table can back many different questions instead of needing a separate table per question. A label that repeats across the table stays unambiguous because it resolves within its own scope.
Available on all plans.
Included in this release
A hidden number field can sum, average, min, max, or count other fields tagged with a score group (plain numbers or values carried from a record lookup). Unanswered items are excluded from the total and flagged as incomplete. Optional bands write a label such as low or high. The server recomputes the total at submit.
A content block can interpolate a calculated total and its band from answers so far (for example {{abandono_total}} / {{abandono_total.band}}). That display is not saved. Web and WhatsApp both write carry columns and the canonical total when the submission completes.
A record lookup field can copy other columns from the matched Record Type row onto namespaced submission paths (for example p7.score). The stored answer stays the human-readable label. Carry is resolved on the server from that label; a label that matches more than one row writes nothing.
A record lookup field can now be scoped to the rows matching a column value, for example id_pregunta equals P1. One shared option bank serves every question instead of one record type per question, the option list only offers the rows in scope, and carried values resolve inside that scope so a label repeated across the table is no longer ambiguous.
A cluster of fixes across three areas: Agent Blocks backed by decision tables, spreadsheet imports into Records, and WhatsApp billing clarity.
Agent Block, decision-table accuracy. A column set to fill silently from the match now writes correctly even when the table pins it to a single value before the respondent has answered anything; previously it was skipped unless an already-asked column held a value. A silently-filled column is now only written when the questions already answered determine a single row, so every respondent with the same answers gets the same value instead of an arbitrary first match. Table-backed questions now validate the respondent’s answer against the actual valid choices, on web and WhatsApp alike, instead of silently accepting anything or skipping ahead. When an agent block captures several fields in one reply, all of them now land in a single submission instead of splitting across several.
Agent Block, exports and the submissions table. Agent block answers used to sit at the very bottom of the export column picker, under the block’s full instruction text, easy to miss in a long form. Each answer now appears where its block sits in the flow, with its own icon and a short spreadsheet header. Large queued exports without a manual column selection now include agent answers too, and the submissions table preview shows what the respondent actually answered, agent-collected turns included.
Cleaner Records imports. A spreadsheet with two columns sharing the same name used to crash the import preview; repeated headers now get renamed automatically (V2, V2 (2)) and import as separate fields. A column containing only 0 and 1 used to import as a checkbox with no way to fix the guess; those columns now import as numbers unless the values are spelled out (true, false, sí, no), and every mapped field now has a type dropdown so you can correct it either way.
Clearer WhatsApp billing. A workspace with plan credits left but no purchased credits is now told, plainly, why WhatsApp won’t send: in the inbox composer, the usage page, and a low-balance email, in English and Spanish. Plan credits cover AI and integration tools; WhatsApp needs purchased credits specifically.
Agent Block fixes on Pro, Business, and Enterprise. Import fixes on all plans. WhatsApp billing clarity on Business and Enterprise.
Included in this release
A Records-table column set to fill silently from the match is now written whenever the table pins it to a single value, even before the respondent answers anything. Previously it was skipped unless an asked column already held a value, so a block whose only mapped column is auto-filled ended on its first turn with the value missing. The editor warning for these columns is now based on the actual rows, so a column that holds one value everywhere is no longer flagged.
A Records-table column set to fill silently from the match is now only written when the questions the respondent answered pin it to a single value. Previously an ambiguous match wrote whichever row came first, so every respondent with the same answers got the same arbitrary value. The block editor now warns when a silently-filled column is not determined by the questions asked, so the author can ask for it instead.
Agent block answers were listed at the very bottom of the export column picker, under the block's full instruction text, so in a long form they looked missing. Each block now appears where it sits in the flow, named by the block, with its own icon in the picker and short spreadsheet headers like "agent_matrix > Sede". Large queued exports that run without a column selection include agent answers too, and the preview column in the submissions table now shows what the respondent actually answered, including answers collected by an agent block.
When an agent block captured several fields in one reply (the answer plus any auto-filled or inferred fields), each field was saved at the same moment and each one created its own submission. A single respondent could end up as four submissions holding one field each. The fields are now saved one after another, so they all land in the same submission.
Agent Block questions backed by a Records table now check the respondent's answer against the actual valid choices before accepting it, on web and WhatsApp alike. A typed answer outside the table, or a question asked mid-flow, no longer gets silently captured or skips ahead. Rejected answer combinations now clear and re-ask the conflicting field instead of resubmitting the same invalid combination.
An Excel or CSV file with two columns of the same name (for example two columns called V2) crashed the import preview. Repeated headers are now renamed (V2, V2 (2)) and imported as separate fields.
A spreadsheet column containing only 0 and 1 was imported as a checkbox field, which rewrote the values as true and false, and there was no way to correct the guess. Those columns now import as numbers unless the column also spells the values out (true, false, sí, no), and every column mapped to a new field has a type dropdown in the mapping step. Checkbox fields also accept the ways a spreadsheet writes them: 1, 0, yes, no, sí.
A workspace that still has plan credits but no purchased credits is now told why WhatsApp will not send, in the inbox composer, the usage page, and the low-balance email, in English and Spanish. Plan credits cover AI and tools; WhatsApp needs purchased credits. The email also warns as the purchased bucket runs low, and the bot still sends exactly one closing notice to the contact then stays quiet while inbound keeps arriving.
Credit packs now price at a flat $0.01 per credit across the whole ladder. Growth is $50 for 5,000 credits, Scale is $100 for 10,000, and a new Peak pack adds 50,000 credits for $500 for workspaces running heavier volume.
Boost stays at $10 for 1,000 credits. Volume discounts on the larger packs are gone, so a credit spent on WhatsApp or any other vendor pass-through costs exactly what the invoice says, with nothing to reconcile.
Available on Pro, Business, and Enterprise plans.
Included in this release
Credit packs now price at a flat $0.01 per credit across the ladder: Growth is $50 for 5,000, Scale is $100 for 10,000, and a new Peak pack adds 50,000 credits for $500. Boost stays at $10 for 1,000. Volume discounts are gone so a credit spent on WhatsApp or any other vendor pass-through costs what it says on the invoice.
Business and Enterprise workspaces get a native Team Inbox to watch and reply to WhatsApp threads in real time. Assign a teammate, link a CRM contact, and hand a paused bot conversation back so the Intake Bot resumes instead of starting over. Inbound keeps arriving when purchased credits run out. Outbound needs purchased credits.
Billing settings now shows a breakdown of the month’s credit usage by category: AI, integration tool calls, and WhatsApp messages. It’s still one balance and one top-up; nothing changes about how you buy or spend credits. The rows always add up to the total shown above them.
This also completes a naming change from “AI credits” to “credits,” since one wallet has funded more than AI for a while now, and the old name undersold what it actually covers.
Available on all plans.
Included in this release
Billing settings now breaks the month's credit usage down by what spent it: AI, integration tool calls, and WhatsApp messages. It is still one balance and one top-up, so nothing changes about how you buy or spend credits. The rows always add up to the total shown above them. This also completes the rename from "AI credits" to "credits", since one wallet has funded more than AI for a while now.
Connecting a WhatsApp number now asks upfront whether you’re bringing a number you already have in Meta, or want a new US number provisioned for you. Bringing your own number now works in any country, and no longer fails at Meta’s authorization step the way it sometimes did before.
Each workspace is also isolated to its own provider account, so one workspace’s WhatsApp Business account can never block or interfere with another workspace’s numbers. Linking a number by ID is now verified against the provider first, so a mistyped ID reports an error immediately instead of leaving a connection that silently receives nothing.
WhatsApp connections can now be removed from the Integrations tab. A number with conversation history is disconnected, not deleted, so past threads stay in Team Inbox.
Available on Business and Enterprise plans.
Included in this release
Connecting WhatsApp now asks whether you are bringing a number you already have in Meta or want a new US number provisioned for you. Bringing your own number works in any country and no longer fails at Meta's authorization step. Each workspace is also isolated to its own provider account, so one workspace's business account can never block another's. Linking a number by ID is verified against the provider first, so a mistyped ID reports an error instead of leaving a connection that silently receives nothing. WhatsApp connections can now be removed from the integrations tab; a number with conversation history is disconnected rather than deleted, so past threads are kept.
July 2026
Since Intake Bots started running on WhatsApp, the wizard had been shortening AI-generated select and boolean option labels to fit WhatsApp’s 24-character row title limit, on every bot, whether it would ever run on WhatsApp or not.
Options are now written for the web first, at full length. WhatsApp still renders them safely: the row title truncates while the full text carries in the list description, and very long option sets fall back to a numbered list. A long option label can no longer cause the questions behind it to get dropped during generation.
Available on all plans.
Included in this release
The intake bot wizard no longer shortens select and boolean option labels to fit WhatsApp's 24-character row title. Options are written for the web first. WhatsApp still renders them safely by truncating the row title and carrying the full text in the list description (or falling back to a numbered list). A long option can no longer cause follow-up questions behind that choice to be dropped during generation.
Two fixes to attribution accuracy.
ioZen now captures the utm_id campaign ID from landing URLs. Ad platforms substitute a numeric ID there (TikTok’s campaign ID, Meta’s campaign ID), and it’s the stable key to track by, since utm_campaign carries a name that changes whenever someone renames the campaign. It shows up on the submission attribution panel and as a CSV export column.
Browser event IDs and the pixel cookies are now stored on the submission when the form completes, so the server-side conversion call shares an event ID with the browser pixel event. Ad platforms use that shared ID to deduplicate the pair instead of counting one conversion twice. Pixel events also now fire only after the submission is durably saved, so a failed save can no longer report a conversion with no matching record behind it.
Available on Pro, Business, and Enterprise plans.
Included in this release
ioZen now captures the utm_id campaign ID from landing URLs. Ad platforms substitute a numeric ID there (TikTok's __CAMPAIGN_ID__, Meta's campaign.id), and it is the only stable campaign key since utm_campaign carries a name that changes on rename. It appears on the submission attribution panel and as a CSV export column. Browser event IDs and the _fbp/_ttp pixel cookies are now stored on the submission when the form completes, so the server-side Conversions/Events API call shares an event_id with the browser Pixel event and the platform deduplicates the pair instead of counting the conversion twice. Pixel conversion events also fire only after the submission is durably saved, so a failed save can no longer report a conversion with no matching record.
Every Intake Bot has been a web-only conversation until now. Business and Enterprise workspaces can connect a WhatsApp number and run the exact same bot there.
Connect a number you already manage in Meta, in any country, or have ioZen provision a new US number for you. Business includes up to 3 numbers; Enterprise is unlimited, and each workspace runs on its own provider account.
Nothing about the bot changes to support this. Conditional logic, agent blocks, calculated fields, and the full submission pipeline (contact, record, Process Board card) all run on WhatsApp exactly as they do on the web. Select fields render as buttons or lists, and respondents can send images, PDFs, audio, and video straight from the chat.
Messages draw on purchased credits, not your monthly plan allotment.
Available on Business and Enterprise plans.
Included in this release
Business and Enterprise workspaces can connect a WhatsApp number and run the same Intake Bot on WhatsApp: buttons and lists, inbound media, calculated fields, agent blocks, and the full submission pipeline (contact, record, Process Board card). Connect a number you already have in Meta or provision a new US number. Business includes up to 3 numbers. Messages use purchased credits, not the monthly plan allotment.
TikTok was quietly dropping our conversion events. The request body shape we were sending had been deprecated, and Events API 2.0 expects a different format. Events looked fine on our side and never showed up in TikTok.
We now send conversions with the current Events API 2.0 request format. ioZen also injects the TikTok Pixel on published Intake Bot pages and fires a browser-side SubmitForm event alongside the server-side Events API call. Both share the same event_id, so TikTok deduplicates them instead of counting twice or missing the browser signal.
Match quality improves with ttclid, the _ttp cookie, and hashed external IDs. A Test Event Code field lets you verify against TikTok’s sandbox in the Test Events tab without touching live data.
Available on all plans.
Included in this release
ioZen now sends TikTok conversion events using the current Events API 2.0 request format, replacing a deprecated body shape that TikTok was silently dropping. ioZen also injects the TikTok Pixel automatically on published Intake Bot pages and fires a browser-side SubmitForm event alongside the server-side Events API call, sharing the same event_id for deduplication. A Test Event Code field lets you verify against TikTok's official sandbox in the Test Events tab. Match quality improves with ttclid, the _ttp cookie, and hashed external IDs.
A Process Board gets noisy fast when everyone owns every card. You could drag cases between stages, but ownership lived in someone’s head or a side channel.
Cards can now be assigned to one or more team members. Pick assignees from the case view, see their avatars on every card, and filter the board by assignee from the toolbar. Newly assigned members get an email with a direct link to the case. Every assignment change lands in the case activity timeline, so you can see who owned it and when it moved.
Available on all plans.
Included in this release
Process Board cards can now be assigned to one or more team members. Pick assignees from the case view, see their avatars on every card, and filter the board by assignee from the toolbar. Newly assigned members get an email with a direct link to the case, and every assignment change is recorded in the case activity timeline.
You could already collect cases and score them. What you couldn’t do was look across a few hundred submissions and see where people finish, stall, or drop off, or change the bot’s voice after generation without rebuilding the flow. This release fixes both, and a couple of builder gaps that kept getting in the way.
Each Intake Bot now has an Analytics tab. You get a completion view (finished, in progress, abandoned), answer distributions for select, number, date, boolean, and agent-collected fields, and a breakdown of where input came from: typed answers, voice, advisor questions, and agent turns.
Pick a schema version and a date range so totals stay explainable when the bot has changed. Turn on AI insights when you want recurring topics, top questions, and sentiment pulled from open-text answers and advisor Q&A. Insights run on demand and use credits. Analytics and insights are on Business and Enterprise.
The Voice Pack that shaped an AI-generated Intake Bot used to freeze at create time. There’s now a Voice and Tone settings section where you can change tone, emoji use, voice examples, negotiation style, and celebration behavior after the fact. A scoped re-polish rewrites just the welcome and farewell to match, and leaves the rest of the flow alone.
Agent blocks no longer have to sit at the top of a flow. Drop them inside branches and repeating groups. Their collected outputs flow through records, mappings, exports, PDFs, and validation the same way top-level fields do, so a goal-based conversation can live deep inside a conditional path.
Select multiple questions and act on them from one toolbar: duplicate, move, apply a shared condition, or delete. The move menu shows a recursive tree, so a selection can land in a nested branch or repeating group in one click instead of climbing a level at a time.
Analytics and AI insights on Business and Enterprise. Voice and Tone and bulk editing on all plans. Nested agent blocks on Pro and up.
Included in this release
Every Intake Bot now has an Analytics tab. See a completion funnel, answer distributions for select, number, date, boolean, and agent-collected fields, and a breakdown of where input comes from: typed answers, voice, advisor questions, and agent turns. Turn on AI insights to surface recurring topics, top questions, and sentiment across open-text answers and advisor Q&A. Pick a schema version and date range to keep totals explainable. Available on Business and Enterprise. AI insights use credits.
The Voice Pack an AI-generated Intake Bot is built with is no longer frozen. A new Voice and Tone settings section lets you edit tone, emoji use, voice examples, negotiation style, and celebration behavior after generation. A scoped re-polish action rewrites just the welcome and farewell messages to match your changes without touching the rest of the flow.
Agent blocks can now live at any depth in a flow, including inside branches and repeating groups, not just at the top level. Their collected outputs flow through records, mappings, exports, PDFs, and validation exactly like top-level fields, so you can drive a goal-based conversation deep inside a conditional path.
Select multiple questions in the builder and act on them at once from a single toolbar: duplicate, move, apply a shared condition, or delete. The move menu now shows a recursive tree, so a selection can drop straight into a deeply nested branch or repeating group with one click instead of moving a level at a time.
June 2026
Content blocks could already carry rich text, embeds, and CTAs. They couldn’t carry a product photo, a badge, or a simple diagram without sending people somewhere else.
Type /image inside a content block or CTA modal and drop a file in. Uploads compress to responsive WebP in the browser and serve from a CDN, so they stay sharp on Retina screens without eating bandwidth. Pick small, medium, large, or full width. Image storage counts toward your workspace quota.
Available on Pro and Business plans.
Included in this release
Add images inside content blocks and CTA modals with a /image slash command. Uploads are compressed to responsive WebP in the browser and served from a fast CDN, so they stay crisp on Retina screens and light on data. Choose small, medium, large, or full width. Image storage counts toward your workspace quota.
Some paths through a bot shouldn’t reach the last question. A respondent might be disqualified halfway through, or they’ve confirmed everything you need by step three. Forcing them to a fixed ending creates friction and, in disqualification cases, a worse experience than just stopping cleanly where it makes sense.
Any content block can now be toggled as the intake’s endpoint. When a respondent reaches it, that block delivers the closing message and the submission is finalized right there. No redirect, no “please wait” screen.
Ending early doesn’t skip anything on the back end. Contact creation, record mapping, the process board card, and any routing rules all fire exactly as they would for a standard submission. The difference is where the conversation stops for the respondent, not what happens with the data.
Each early-ended submission also carries an outcome label you define. It shows up on the submission detail view and is available as an export column, so you can filter and report on which path each case took.
Pair an early-ending block with a condition and you get branch-specific closings. One branch says “You’re all set, we’ll be in touch.” Another says “Based on your answers, this isn’t the right fit right now.” Each ends the intake at exactly the right point, with the right message.
Available on Free, Pro, and Business plans.
Included in this release
Any content block can now be marked as the end of a path. When a respondent reaches it, that block becomes the closing message and the submission is finalized right there — the rest of the flow is skipped and the full pipeline (contact, record, card, routing) still runs. Pairs with conditional logic for branch-specific endings like disqualification or 'you're all set'. Each early-ended submission stores an outcome label you choose, shown on the submission and available as an export column.
When an Instruct Mode advisor block is running, the bot answers questions. That’s the point. But respondents don’t always want to keep asking — sometimes they just need one answer and want to move on.
Previously, that required waiting for the bot to decide the conversation had reached a natural end. For some respondents that wait felt like being stuck.
Advisor blocks now show a Continue or Finish button on every single turn, regardless of where the conversation is in the flow. The label adapts to context: “Continue” if there are more steps ahead, “Finish” if the advisor is the last block. Builders can customize the label if the default doesn’t fit their flow.
No change to how the advisor itself behaves. It still answers from knowledge, still grounds every response in what you attached. The button just ensures respondents are never trapped waiting for the bot to wrap things up on its own.
Included in this release
Knowledge-grounded advisor blocks now show a persistent Continue or Finish button on every turn, so respondents can always move on without waiting for the bot to decide the conversation is over. The label adapts to the block's position in the flow and can be customized.
Some intake flows have a natural point where the respondent needs to ask a question before they can answer one. What does this coverage actually include? What happens after I submit? Do I qualify if I work part-time?
An FAQ block can cover common questions, but it breaks the conversation. Instruct Mode keeps the flow intact.
Drop an Instruct Mode agent block onto an Intake Bot and attach markdown knowledge sources. When a respondent asks a question, the agent answers it using only what you attached. Nothing from the open web. Nothing it made up. If the answer isn’t in the attached knowledge, it says so.
Two configurations:
Standalone advisor. The block shows up as a dedicated Q&A step. Respondents ask questions and get answers. A persistent Continue or Finish button is always visible so they can move on whenever they’re ready.
Mid-collect Q&A. Inside a Collect Mode flow, the agent can answer a respondent’s question and then redirect back to gathering the fields it still needs. The conversation stays on track.
Previously there was no good answer for a respondent who had a question mid-flow. They could abandon, look things up elsewhere, or submit guesses. Instruct Mode gives them answers without breaking the intake.
Available on Pro plans and above.
Included in this release
Agent blocks can now answer respondent questions from attached markdown knowledge inside the flow. Instruct mode adds a zero-output knowledge-grounded advisor and mid-collect answer-then-redirect during slot collection. Responses are grounded only in builder-attached knowledge — never open-domain. Available on Pro plans and above.
If you use Records-backed decision tables in an Agent Block, you may have a column that should be filled automatically once a row is matched rather than asked as a question. A product code, a tier identifier, an internal category. This release adds that.
Mark any mapped column in a decision table as “fill silently from match.” Once the respondent’s answers identify a row, that column’s value is pulled from the matched row and saved to the submission. It never shows up in the conversation.
The derived value behaves like any other field from that point: it appears in record mapping, process board cards, exports, and action block field mappings. Nothing downstream needs to know it came from a table lookup rather than a respondent answer.
Before this, you could only output columns the agent explicitly asked about. If you needed a derived value (like a plan code that depends on the combination of size and coverage type), you either asked the respondent a question they couldn’t meaningfully answer, or left the derivation to post-processing elsewhere.
Now you define it once in the table. The agent handles the logic.
Included in this release
Agent block decision tables can now carry a value that is implied by the chosen combination but never asked. Mark a mapped column 'fill silently from match' and, once the respondent's answers pin a row, that column's value (for example a unique code per combination) is pulled from the matched row and saved to the submission. Derived values ride along to records, exports, and process board cards like any other field, but never appear as a question in the conversation.
Building the same FlowApp twice for different clients, offices, or environments has always been manual work. Copy each IntakeBot field by field, rebuild the Process Board stages, map the routing rules again. This release eliminates that.
A three-step wizard handles the whole thing. Pick the destination workspace, review a preflight checklist that shows every Intake Bot, Process Board, phase, and Record Type about to be installed, then run the copy. The operation is atomic — either everything lands cleanly or nothing changes.
Copied Intake Bots arrive as drafts so you can review them and reconnect any dependencies before publishing. The source workspace is untouched throughout.
If the destination workspace is missing integrations or custom contact fields that exist in the source, the result step surfaces them with deep links. You can jump straight to reconnect an integration or create the missing field without leaving the flow.
Structure and configuration only — no submissions or cases are copied.
Available on all plans.
Included in this release
Workspace owners and admins can copy a FlowApp from one workspace into another. A three-step wizard picks the destination, previews Intake Bots, Process Boards, phases, and Record Types to be copied, and runs a dependency checklist for integrations and contact fields in the destination. The copy includes structure and configuration only (no submissions or cases), runs in a single transaction, and leaves copied Intake Bots as drafts. Missing integrations link straight to reconnect, and missing custom contact fields can be created in the destination right from the result step. Available on every plan.
When a respondent needs to pick from an existing list, typing a free-text answer creates problems downstream. You get inconsistent spellings, values that don’t match your records, and manual cleanup before anything can route correctly.
Record lookup fields fix this at the source.
Add a record lookup field to any Intake Bot and point it at a Record Type. Respondents see a search box (for large datasets) or a list of selectable options (for smaller ones), sorted A to Z. Whatever they pick is stored as a reference to the actual record row, not a copied string.
That reference travels through the rest of the submission: record mapping can resolve the linked row automatically, process boards associate the card with the right entity, and exports include the resolved values rather than a raw text answer.
For Record Types with many rows, the lookup field loads matches on demand as the respondent types. No pagination, no loading the full list upfront. Builders define the field once and it scales with the record set.
Available on all plans.
Included in this release
A new field type lets respondents search and pick an existing Record Type row (a program, location, product, or any record) instead of typing it. Large datasets switch to a search as you type picker that loads matches on demand and sorts them A to Z; smaller sets render as selectable options. The chosen record links the submission to that row, so record mapping, process boards, and exports resolve the real entity. Available on every plan.
Fixed question sequences work fine for simple bots. They start to feel awkward when the path depends on a combination of answers, or when you need to collect something open-ended that takes a few rounds to pin down. The new Collect Mode agent block handles that kind of intake.
Instead of asking questions one by one, a Collect Mode block runs a goal-driven conversation. You define the fields you want, attach knowledge sources (markdown context or Records-backed decision tables), and the agent figures out how to gather them. The conversation adapts to what the respondent has already said rather than marching through a fixed list.
The outputs are ordinary submission fields. Process boards, records, and action blocks pick them up the same way they would any other field.
For cases where you need the respondent to pick from a valid set of combinations, you can back the agent with a Records decision table. The agent enforces valid combinations server-side once the respondent’s answers pin a row. Large option sets use search-as-you-type so respondents never type something invalid.
If AI is unavailable or credits run out, the block falls back to static questions. A credit budget and turn cap prevent the conversation from running away. The authoring UI shows each slot’s resolved behavior — free text or constrained by a table — as you build, so there are no surprises at runtime.
Available on Pro plans and above.
Included in this release
A new intake bot block kind gathers multiple typed output fields through a goal-driven, multi-turn conversation instead of a fixed question sequence. Builders attach markdown context and Records-backed decision tables as knowledge sources; enforced tables validate final slot combinations deterministically server-side. Outputs are ordinary fields written to submission data, so process boards, records, and action blocks consume them unchanged. Credit budget and turn caps mirror action block guardrails; AI outage falls back to static questions. Available on Pro plans and above.
For a while now an Intake Bot would collect the case and hand it off, and the rest was on you. Push it into your CRM by hand, or wire up a webhook and hope it held. This release closes that gap and a few others.
Drop an action block onto an Intake Bot and it creates the contact, deal, or lead in HubSpot or Zoho the moment a case reaches a point in the flow or finishes. You map each field once with a tool picker. Every run is logged on the submission with its timing, credit cost, and any errors, so you can see exactly what fired and when.
Some handoffs are simple: one record, fixed fields. Others need judgment. Action blocks now run in three modes. Deterministic fires a single tool you preconfigure. Assisted lets the AI fill in any parameters you didn’t map, following a short instruction you write. Agentic turns the block loose as a multi-step agent across any toolkit you allow, with hard caps on steps and credit budget so it never runs away. The submission’s Actions tab shows every step it took.
We sorted every integration into Standard and Premium. Standard connections work on any plan. Premium ones, like the deeper CRM and productivity tools, open up on Business and Enterprise. Free workspaces can connect up to two integrations; every paid plan is unlimited. Downgrade later and your existing connections and data stay put. The only thing that pauses is new runs on locked tools.
In the Intake Bot editor you can paste a block of text or a list of questions and let AI turn it into real fields, with types, required flags, and select options already filled in. Review each draft, edit anything that’s off, then drop them into the bot. Want to skip the AI? One-per-line mode adds them straight across and spends no credits.
Plenty changed under the hood. Plan and feature changes now apply the instant they happen, so an upgrade unlocks features without a page refresh, and live updates run over authenticated private channels. Each workspace’s data retention window is now tracked, and expired submissions, along with their files and stored secrets, are being cleared automatically as that rolls out over the coming days. We also tightened database access, outbound request handling, content security policy, and input validation, and added redaction so personal data never reaches the logs.
Available across plans, with assisted and agentic action blocks on Pro and up.
Included in this release
A platform-wide hardening pass shipped with this release. Data retention controls are now in place: the system tracks each workspace's retention window and is preparing to automatically remove expired submissions along with their uploaded files and stored secrets. Automatic deletion is rolling out gradually over the coming days. Plan and feature changes now take effect immediately, so upgrades and downgrades unlock or restrict features without a page refresh, and live updates run over authenticated private channels for more reliable real-time sync. Behind the scenes we tightened database access controls, outbound request handling, content security policy, and input validation, and added redaction so personal data never reaches logs. Intake Bot configuration is now strictly validated to keep embedded content safe, and select fields are capped at 200 options for predictable performance.
In the Intake Bot editor, paste or enter multiple questions at once. AI structures the text into fields with types, required flags, and select options where needed. Review and edit each draft before inserting them into the schema. One-per-line mode works without AI; AI structuring is credit-gated.
Integrations are now gated by plan tier. Standard integrations are available on all plans. Premium integrations (such as advanced CRM and productivity tools) unlock on Business and Enterprise. Free workspaces can connect up to 2 integrations; paid plans are unlimited. Access is enforced at connection, in the Browse directory (locked cards with upgrade prompt), and at action-block execution time, so downgrades preserve existing connections and data while blocking new runs.
Enabling a new Composio tool for Intake Bot action blocks is now an admin DB toggle, not a code change. Tool names, descriptions, and input schemas derive from the live Composio catalog.
Action blocks now support three executor tiers. Deterministic fires a single preconfigured tool. Assisted uses an AI instruction to fill any unmapped parameters before calling the tool. Agentic runs a multi-step agent loop across any allowed toolkit, with configurable step and credit-budget caps. Each step is audited individually and the submission detail Actions tab shows a nested step timeline.
Add action blocks to Intake Bots to automatically trigger any integration action when a case reaches a position in the flow or completes. Blocks support HubSpot, Zoho CRM, Slack, Monday, Mailchimp, and hundreds of other Composio-powered tools. Each block is configured with a tool picker, per-parameter field mapping, and a timing choice. Executions are async, credit-gated, and audited per submission.
May 2026
When you’re setting up a Meta integration, you need a way to confirm the conversion triggers are firing correctly without polluting your live dataset. Previously that required running a live test submission and then cleaning up the data.
Now, any test submission run inside ioZen (bot preview or single-field test view) automatically routes to Meta’s Test Events tab when a Test Event Code is set. You can verify your On Submission and Field-Level conversion triggers end to end, with real Pixel + CAPI pairs showing up in the sandbox exactly as they would in production.
Real submissions are isolated. They always go to your live dataset and never carry the test code, so it’s safe to leave the Test Event Code set permanently after initial setup.
Available on all plans.
Included in this release
Test submissions you run inside ioZen (bot preview and single-field test view) now route to Meta's Test Events tab when a Test Event Code is set, so you can verify your On Submission and Field-Level conversion triggers end to end without touching live data. Real submissions always go to your live dataset and never carry the test code, so it's now safe to leave the Test Event Code set permanently.
Meta’s Conversions API has been part of ioZen for a while. The problem with server-side-only attribution is that Meta needs both a browser signal and a server signal to deduplicate correctly. Without the Pixel, CAPI events can end up competing with browser events fired by other tools on the same page, or just missing the browser signal entirely.
Starting today, ioZen injects the Meta Pixel automatically on every published Intake Bot page. When a submission comes in, a browser-side Lead event fires alongside the CAPI event. Both carry the same event_id, so Meta knows they’re the same conversion and counts it once.
Match quality also improves. The _fbp and _fbc cookies are now passed through alongside the raw IP via CAPI, which means Meta has more signals to match the conversion to an ad click. In practice this shows up as better attribution in Events Manager, not higher conversion counts.
The Test Connection button opens the bot in a new tab to fire a real Pixel event, then links you to the Events Manager Test Events tab so you can confirm the deduplicated pair arrived. A Test Event Code field lets you use Meta’s official sandbox without touching live data.
Available on all plans.
Included in this release
ioZen now injects the Meta Pixel automatically on published Intake Bot pages and fires a browser-side Lead event alongside the server-side CAPI event. Both events share the same event_id so Meta deduplicates them correctly. The Test Connection button opens the bot in a new tab to fire a real Pixel event, then links you directly to the Events Manager Test Events tab to verify the deduplicated pair. A Test Event Code field lets you use Meta's official sandbox. Match quality improves with _fbp/_fbc cookies, shared event IDs, and raw IP forwarded via CAPI.
Two improvements shipping together today.
Generation recovery. When an Intake Bot generation job times out, the spinner card used to stay there permanently. The only fix was to know that deleting the bot would clear it, which most people didn’t know. Now stale jobs are treated as recoverable. Delete actions mark a timed-out job as failed before cleanup, so the card resolves cleanly. Runtime AI-generated content blocks also have a fallback path: if the AI call fails at runtime, the block falls back to the authored copy, or to a localized message if no copy is present. No more blank blocks.
QR code downloads. The Intake Bot Sharing Hub now includes a QR Code option. Preview the code, copy the linked public URL, or download a PNG for use in printed materials, event signage, or offline distribution. The QR code updates automatically when you change the bot’s public slug.
Both updates are available on all plans.
Included in this release
Stale Intake Bot generation jobs are now treated as recoverable instead of leaving users trapped behind spinner cards. Delete actions can mark timed-out jobs failed before cleanup, and runtime AI-generated content blocks now fall back to authored copy or a localized message if the AI call fails.
The Intake Bot Sharing Hub now includes QR Code as a sharing method. Users can preview the code, copy the linked public URL, and download a PNG for print or offline distribution.
The new Ludicrous tone is for intake bots that are supposed to be fun. Demo bots. Showcase bots. Bots where the point is to show off what ioZen can do.
Ludicrous unlocks all 9 Magic Moment kinds with no budget cap. Other tones limit how many effects the AI can place and which kinds are available. Ludicrous removes both restrictions. The AI also picks intensity (subtle, standard, or epic) per content block based on context, rather than locking everything to a single level.
The plan AI now selects Ludicrous automatically when the prompt asks for a showcase, demo, or “all the magic moments” experience. If you’re building something for your own portfolio or trying to show a client what ioZen is capable of, describing that in the prompt is enough to activate it.
Non-Ludicrous bots are not affected. Their intensity policy continues to follow the tone’s configured level.
Available on all plans.
Included in this release
New 'Ludicrous' tone for comedy-first and showcase intake bots. Unlocks all 9 Magic Moment kinds with no budget cap, and lets the AI pick intensity (subtle, standard, or epic) per content block. The plan AI picks Ludicrous automatically when the prompt asks for a showcase, demo, or 'all the magic moments' experience. Epic intensity on content blocks is now supported and preserved end to end for Ludicrous bots; non-Ludicrous bots continue to have intensity forced to their tone's policy level.
Content blocks can now do something besides show text. Add a Magic Moment and the block triggers an ambient effect when the respondent reaches it.
Nine effects are available: confetti, fireworks, thunderstorm, deep-breath, gong, dramatic-explosion, drama-curtain, rainbow-portal, and flying-unicorn. Each runs in three intensities: subtle, standard, and epic. A kind picker in the block editor replaces the old toggle so you can see and choose exactly what you’re adding.
Performance. Each effect is lazy-loaded independently. If a bot has no Magic Moments, zero bytes are shipped for them. A bot using only confetti loads only the confetti code. Effects respect prefers-reduced-motion and Save-Data. There’s also a bot-level kill switch in settings to disable all effects at once.
AI selection. The AI skeleton generator now picks Magic Moment kinds based on the bot’s tone. Playful bots can receive up to two effects from the full library. Warm bots get one effect from a curated set (deep-breath, gong, confetti, drama-curtain, fireworks). Professional and formal bots receive none. Celebration effects you configure manually are preserved when you regenerate.
Available on all plans.
Included in this release
Content blocks can now trigger one of six ambient celebration effects — confetti, fireworks, thunderstorm, deep-breath, gong, or dramatic-explosion — each with subtle, standard, and epic intensity modes. A kind picker replaces the old toggle in the block editor. Effects are lazy-loaded per kind (zero bytes shipped for unused kinds), respect prefers-reduced-motion and Save-Data, and include a bot-level kill switch in settings. The AI skeleton generator can now suggest any ambient kind.
Three new ambient celebration effects for content blocks: drama-curtain (velvet stage curtains sweep open), rainbow-portal (a swirling rainbow portal blooms and dissolves), and flying-unicorn (a unicorn glides past trailing a rainbow streak). Each is lazy-loaded, ships zero bytes when unused, respects prefers-reduced-motion and Save-Data, and is available to the AI skeleton generator so it can pick contextually for the bot's tone.
The AI skeleton generator now picks Magic Moment kinds based on the bot's tone. Playful bots can use 2 effects from the full library; warm bots get 1 effect from a curated subset (deep-breath, gong, confetti, drama-curtain, fireworks); professional and formal bots continue to receive no effects. Manually-authored celebrations on existing blocks are preserved across regeneration runs.
When AI Document Extraction launched, it only worked on top-level file questions. Any file field inside a conditional branch was excluded.
That limit is gone. Extraction can now be enabled on file questions at any nesting depth. The runtime extractor finds the uploaded document regardless of where in the conversation tree it lives, and fills the child answers correctly.
Two other improvements shipped at the same time. Generated child questions no longer include a redundant photo upload or location field below the file you just uploaded. Those were noise in the conversation and they’re removed. And the AI extraction panel in the field editor now shows which child questions are tied to the extraction, so builders can see exactly what will be pre-filled at runtime.
Available on Pro, Business, and Enterprise.
Included in this release
AI extraction can now be enabled on file questions placed inside conditional branches, not just top-level questions. The runtime extractor correctly fills child answers regardless of how deeply the file question is nested. Generated child questions also no longer include redundant photo upload or location siblings beneath the file you just uploaded.
April 2026
File upload questions now do more than collect a document. Point ioZen at any file field, enable AI extraction, and the bot reads the uploaded file and fills in the answers for the respondent.
Upload a driver license and the name, address, and date of birth fields complete on their own. Upload an invoice and the account number, total, and date pull out cleanly. Upload a utility bill and the service address is already there when the respondent gets to that question.
How it works. Builders configure the feature in the field panel: toggle AI extraction on, add a document hint describing what kind of document to expect (for example, “US driver license” or “electricity bill”), and optionally generate child questions automatically from a sample document. The generated child questions use the same conditional logic editor as any other field and support nested branching.
At runtime, respondents see a “Reading your document…” indicator while ioZen processes the upload with vision AI. Fields that meet the 60% confidence threshold fill automatically. Fields that don’t stay blank for the respondent to fill in manually. The respondent then reviews every pre-filled answer before the conversation continues.
Where it lives. AI Document Extraction is available on file upload questions at any position in the conversation. Builders on Pro and above can enable it. The child questions it generates behave like any other field.
Available on Pro, Business, and Enterprise.
Included in this release
File upload questions can now be configured with AI extraction. When a respondent uploads a document (driver license, utility bill, invoice, passport, etc.), ioZen analyzes it with vision AI and automatically prefills a set of child questions — name, address, date of birth, account number, and more. Respondents see a live 'Reading your document...' progress indicator, then review and confirm each extracted answer. Builders configure the feature in the field panel: enable AI extraction, add a document hint (e.g. 'US driver license'), and optionally generate the child questions automatically from a sample document. Generated child questions use the same conditional logic editor and support nested branching. Runtime extraction respects a confidence threshold (default 60%) — low-confidence fields remain blank for the respondent to fill manually. Available on Pro plans and above.
The biggest release since Submission Intelligence, all shipping at once: voice input across every field type, a rebuilt mobile chat, an AI that pauses to explain its plan before it builds anything, an Integrations directory, in-product feedback bots, and a four-tier pricing structure with a real Enterprise option.
Voice on every field. Respondents can dictate answers anywhere now. Text and textarea fields stream live transcription with a light AI polish for capitalization and punctuation. Email, phone, URL, number, date, boolean, and select fields go through a typed extraction pipeline that turns speech into structured values. “Next Friday at 3pm” becomes an ISO date. “Five five five one two one two” becomes a phone number. “All except YouTube” selects every option but YouTube. Voice ships on by default for new bots, in EN and ES, and audio never leaves the device.
Mobile-first intake chat. The public chat was rebuilt around a single persistent composer that stays mounted across every field transition. The iOS virtual keyboard no longer dismisses between questions. Advancing through text, email, date, select, geolocation, and file fields feels continuous. Zero keyboard pops, zero viewport jumps, zero flicker. The advance button sits in the same pixel position on every field, whether it shows Continue, Skip, or Send.
An AI that pauses to explain itself. The Smart FlowApp Wizard and onboarding conversation now draft a short conversation plan (goal, audience, beats, branches to honor, priority signal) and pause for your approval before generating the schema. Approve to build, or describe what you want changed and the AI refines the plan. You stay in the loop on branching logic before any schema is written, which catches obvious problems early. Like asking someone to upload a file before checking whether they have one.
Generation that’s faster and calmer. Bot generation now runs as a multi-pass pipeline: a creative model writes the conversation, then a separate reasoning model enriches each field with intelligent extraction, follow-up behaviors, and validation. Bots arrive with content blocks personalized via template variables and a single Voice Pack that keeps tone consistent from welcome to farewell. We upgraded every AI surface to the latest model generations with automatic fallback, fixed a truncation bug that was silently cutting off long generations, and tuned the failure UI so transient provider hiccups no longer flash a red “Generation failed” message on bots that ultimately succeed.
A new home for everything else. The sidebar got a refresh with a workspace switcher and a FlowApp switcher you can use from anywhere. There’s a new Integrations directory listing 25+ destinations across marketing, automation, CMS, CRM, email, and productivity. Each card deep-links to the right setup path. Two in-product bots collect feedback and integration requests with full context attached as hidden fields. Wizards persist their state to localStorage so a refresh or browser restart no longer loses your place. Every published IntakeBot gets a dynamic Open Graph image rendered from its design tokens, so links shared on WhatsApp, iMessage, Slack, and the rest render a branded preview instead of a favicon. And bot share URLs are now customizable: pick a memorable slug from Settings and the public link, embed code, and QR code all update together.
Four tiers, with a real Enterprise option. Pricing has been restructured. Unlimited submissions are now included on every paid plan, forever. Pro is 3 FlowApps, 5 IntakeBots, and 5,000 contacts. Business is 10 FlowApps, 20 IntakeBots, 25,000 contacts, and 50 GB of storage. Enterprise starts at $500/mo and includes unlimited everything, SSO/SAML, a custom domain, white-label, 50,000 AI credits per month, and a dedicated CSM. Enterprise is custom-billed. Inquiries route through an in-product intake bot, not Stripe. Drafts and archived bots no longer count toward your published-bot limit either, so you can iterate or archive freely.
Included in this release
Every AI surface in ioZen has been upgraded to the latest available model generation, with automatic fallback to the prior stable model if the new one is unavailable. This covers intake bot generation, voice transcript polish, voice field extraction, contact import mapping, content block generation, field label suggestions, and vision extraction. A bug that caused AI responses to get silently truncated mid-output has been fixed, so generated bots no longer arrive with cut-off fields or incomplete welcome messages. The net result is faster completions and better extraction quality on complex inputs.
Subscription pricing is four tiers: Free, Pro, Business, and Enterprise. Unlimited submissions is the headline feature, available on every plan including Free. Pro and Business cap Intake Bots and FlowApps so the next tier is a clear step up. Enterprise is custom-billed from $500/mo with a dedicated CSM, SSO/SAML, custom domain, custom CSS, and 50,000 credits per month. Enterprise inquiries go through an in-product Intake Bot or hello@iozen.ai.
Only published Intake Bots now count toward your plan's bot limit. Drafts and archived bots are free, so you can iterate on designs, test different conversation structures, or keep old bots archived without eating into your slot count. The usage card and billing summary now both show "Published Intake Bots" to make this clear. This also fixes a bug where archiving a bot did not free up its slot for Pro customers.
The sidebar has been updated with new ioZen logo marks, a redesigned workspace switcher that lets you jump between workspaces from anywhere in the app, and a dedicated FlowApp switcher for moving between active FlowApps without losing your place. The Integrations section now appears in the sidebar nav alongside the existing groups.
Every Intake Bot ships with a readable, customizable share URL slug. Pick a memorable identifier from the Settings tab (4 to 40 characters, lowercase letters, numbers, and hyphens) and the public link, embed code, and QR code all update together. Uniqueness is enforced globally and validation runs client- and server-side to keep the URL clean.
The "Regenerate" button on the AI conversation plan card has been replaced with prompt-driven "Refine". Tell the AI exactly what to change — tighten the audience, add a qualification branch, drop a beat, switch the priority signal — and it responds with a short summary of what it adjusted plus a new plan for review. Available in the Smart FlowApp Wizard, Smart IntakeBot Create, and Conversational Onboarding.
When a workspace records its first non-test submission, ioZen fires a full-screen celebration with confetti, the respondent's name, and a direct link to the submission. The moment is delivered in real time via Supabase Broadcast if you're online and surfaces on next login otherwise. Dismissed once per workspace so it never overstays its welcome.
FlowApp and IntakeBot AI generation no longer flash a red "Generation failed" bubble on the first transient provider hiccup. The failure state is surfaced only after QStash has exhausted its retry budget. A dedicated generation banner on the FlowApp detail page streams live progress while a background job is running, and a resume banner on the FlowApps listing recovers sessions where the final workflow-wiring step was interrupted. Discard is always one click away.
Two ioZen-powered popup bots now live inside the product. "Send feedback" is available from the user menu and dashboard header and branches between bug, feature, and question. "Request integration" lives on the Integrations page header and inline footer and is category-aware. Each submission carries rich context as hidden fields — workspace, plan tier, locale, source route, and browsing category — so the team sees exactly where a request is coming from.
A new Integrations page under every workspace lists 25+ integrations across Marketing, Automation, CMS, CRM, Email, and Productivity. Each card carries a status badge (Native, Via Webhook, Guide, Coming Soon) and deep-links straight to the right configuration path — webhook setup for automations, platform-specific embed guides for CMSes, and a clear request flow for integrations still on the roadmap.
Smart FlowApp Wizard, Smart IntakeBot Create, and Conversational Onboarding now persist their in-flight state — phase, FlowApp/IntakeBot id, and correlation id — to localStorage. Close the tab, reload the app, or come back tomorrow and the wizard rehydrates the latest plan or proposal from the server on mount. Dedicated resume banners on the FlowApps listing and FlowApp detail pages make an unfinished session impossible to miss, with clean paths to continue or discard.
Every AI-generated intake bot now arrives with intelligent field configurations already applied. Name and identity fields automatically extract clean values from conversational responses ("Hi, I'm Jay Moreno" saves as "Jay Moreno"). Open-ended questions get AI follow-up behaviors that guide respondents toward complete, actionable answers. Email, phone, and URL fields are reliably detected and typed correctly, with proper mobile keyboard and validation support.
When your intake bot asks "How should we reach you?" and branches into email, phone, or other channels, the contact mapping now correctly identifies the respondent's contact info regardless of which branch they take. Email and phone fields in conditional branches share a unified identity so your CRM integration always finds the right value.
Intake bot generation now uses a multi-pass pipeline: a creative AI writes the conversational structure, then a separate reasoning model enriches each field with intelligent follow-up behaviors, value extraction, and validation rules. The result is faster generation, more reliable output, and richer bots out of the box — with AI-powered content blocks, template variable personalization, and per-field intelligence configurations applied automatically.
Creating a new intake bot from the Smart Wizard is now faster and more direct. After the AI generates your bot, it's automatically created and ready to customize — no intermediate summary screen to review. This matches the onboarding experience and gets you to your bot editor sooner.
During onboarding, the ioZen bot now shows a live 5-step checklist and a narrated discovery feed while it learns about your organization from your website. You'll see which hostname was visited, how many pages were discovered and read, and what the AI is currently analyzing — with rotating hints during the slower profile-extraction step. The percent bar advances across all steps and a stall warning surfaces if the job takes longer than expected. Replaces the previous single-line typing indicator.
Schema generation is now lighter. Welcome and farewell copy run as a dedicated parallel pass so the main generation step finishes faster. Background retries are tuned and the progress UI waits longer before showing a failure on the longest step, so transient slowdowns no longer flash a 'Generation failed' message on bots that ultimately succeed.
The public Intake Bot chat has been rebuilt around a persistent composer architecture: a single text input stays mounted across every field transition, so the iOS virtual keyboard no longer dismisses between questions. Advancing through text → email → date → select → geolocation → file → content block feels continuous — zero keyboard pops, zero viewport jumps, zero flicker. Per-field affordances (calendar popover, file drop zone, geolocation capture with map preview, option chips) render above the composer with consistent spacing, typography, and focus management. A universal right-slot advance button (Continue / Skip / Send) sits in the same pixel position on every field so muscle memory carries across the whole chat. Compact layout auto-engages on phone-sized viewports and stays stable through keyboard open/close events. Messages are bottom-anchored and no longer jump on transition. Typed input on date and geolocation fields now flows through the same AI parsing pipeline as voice, so 'tomorrow at 3pm' or an address typed by a hardware keyboard both resolve cleanly. Geolocation capture shows a map preview above the composer before the user confirms. All four chat surfaces — public view, test field dialog, test content block dialog, and Smart Create preview — share the same refactored input area, so every improvement lands everywhere at once.
AI-generated intake bots now produce longer, more thorough conversations. Template variables are placed more intentionally throughout the flow for a natural, personalized feel without the bot feeling mechanical. Generation plans now carry stable per-row IDs, laying the groundwork for inline plan editing.
Every newly-created Intake Bot now ships with voice input enabled by default, so respondents can dictate answers on email, phone, URL, number, date, select, multi-select, and boolean fields without the creator flipping a setting first. Text and textarea already had always-on voice polish. Existing Intake Bots are untouched — their current voice setting is preserved exactly. Creators can still toggle voice off at any time in the bot's settings. Bots duplicated from an older bot keep the original voice setting; bots duplicated from a newer bot keep voice on. The voice language follows the bot's configured language (EN or ES), not the creator's browser locale.
AI-generated bots now share a single Voice Pack across every step. Questions, follow-ups, content blocks, and welcome/farewell messages all stay on-voice from start to finish. Playful intakes stay playful; formal intakes stay precise.
The IntakeBot wizard, FlowApp wizard, and onboarding conversation all now produce AI-generated content blocks automatically when the use case benefits from personalization — recaps, tailored recommendations, context-specific encouragement. Each AI block references prior answers via template variables so the output is grounded in the individual respondent. Static plain and rich content blocks remain available when exact copy matters (legal, pricing). Available on every plan; each AI block consumes one AI credit at runtime.
The Smart FlowApp Wizard and onboarding conversation now draft a short, structured conversation plan — goal, audience, conversation beats, branches to honor, and priority signal — and pause for your approval before generating the schema. Approve to build, or regenerate for a fresh draft. The plan phase shows a live mini checklist with rotating hints so you can see what the AI is thinking, and each beat and branch streams into the plan card as it's written. This keeps you in the loop on branching logic (for example, asking whether a respondent has a file before asking them to upload one) before any schema is written, improving the quality and structure of the generated FlowApp.
Every published Intake Bot now generates a 1200×630 Open Graph image on the fly, so links shared on WhatsApp, iMessage, Twitter, LinkedIn, Slack, Discord, and Facebook render a rich, branded preview instead of a generic favicon. The image is rendered dynamically from the bot's design tokens — primary color, background, template, avatar, and welcome message — so it matches the live chat pixel-for-pixel without any setup. Twitter large-card metadata is included. The 'Powered by ioZen' wordmark is added in the corner, and is automatically removed on plans that include Remove ioZen Branding. Images are cached forever at the edge using a versioned URL (`?v={updatedAt}`), so edits propagate immediately on the next share while existing previews stay fast.
Respondents can dictate answers on every field a bot supports. Text and textarea fields stream live interim transcription and get a light AI polish for capitalization and punctuation without changing meaning. Email, phone, URL, number, date, boolean, single-select, and multi-select fields go through a typed extraction pipeline that turns speech into structured values — 'next Friday' becomes an ISO date, 'five five five one two one two' becomes a phone number, 'all except YouTube' selects every option but YouTube, 'también añade verde' appends to an existing multi-select. Low-confidence and ambiguous extractions surface an inline banner so the respondent can correct them. Parsed values are announced to screen readers via a polite aria-live region for accessibility parity. Built on the Web Speech API — audio never leaves the device except via the browser's own speech service. Supports EN and ES, respects the Intake Bot's configured language, and is hidden automatically on browsers without microphone support.
When an IntakeBot field is optional, the Send button used to sit there disabled until the visitor typed something. Nothing told them they could move on. Some people probably sat there wondering if the bot was broken.
Now optional fields show a Skip button. Tap it to move to the next question without typing anything. Start typing and it switches to Send with a smooth animation so the change feels intentional, not glitchy.
Works in English and Spanish. Available on all plans.
Included in this release
Optional fields in Intake Bot conversations now show a dedicated Skip button instead of a disabled Send button when left empty. The button animates between Skip and Send states as the user types, with full i18n support (EN/ES). Improves completion rates by making it obvious that optional questions can be skipped.
Two quality-of-life improvements shipping together.
Draft session resume. When a visitor starts an IntakeBot conversation and leaves before finishing, they can now come back and pick up where they left off. The next time they open the same bot, a prompt gives them the choice to continue their previous session or start fresh. Sessions expire after 24 hours, and the system detects schema version changes so a stale draft doesn’t confuse anyone. Works across all embed modes: inline, popup, and floating widget.
This should help with completion rates on longer intake flows where people get interrupted mid-conversation.
AI Value Extraction. This is the third AI mode in AI Field Intelligence, alongside Socratic Negotiation and Strict Validation. Value Extraction runs silently when a respondent’s answer contains conversational noise. If someone types “Hi, my name is Pedro Navajas” into a Name field, the AI extracts “Pedro Navajas” and saves that without showing the full raw response back to the user. When no value can be found, the bot generates a natural re-prompt instead of repeating the original question verbatim.
The number of re-prompt retries is configurable per field, from 0 to 3, with a default of 1. The AI wizard automatically applies extraction on name and identity fields when generating new bots.
Both features are available on all plans.
Included in this release
Public Intake Bot visitors can now resume an unfinished submission after refreshing or re-entering the page. A lightweight localStorage pointer reconnects to the in-progress server record, and a prompt lets users continue where they left off or start over. Schema version changes and session expiry are handled automatically. Works across all embed modes with graceful degradation.
Extract Value AI mode silently normalizes conversational field responses before saving. When someone replies with greetings or extra text (for example 'Hi, my name is Pedro'), the system keeps just the relevant value ('Pedro'). When no value is found, the bot re-prompts with a natural nudge instead of repeating the original question. Re-prompt retries are configurable per field (0 to 3, default 1). The wizard auto-applies extraction on name and identity fields. The field panel shows all three AI operations at a glance: Extract Value, Socratic Negotiation, and Strict Validation. Credits scale with the AI work done.
Fixed a bug where filtering the submissions list by status (In Progress, Completed, or Abandoned) returned no results. The filter option values were lowercase strings but the stored data uses uppercase enum values, so the comparison always failed. Values are now aligned and the filter works correctly.
Included in this release
Fixed a bug where filtering submissions by status (In Progress, Completed, Abandoned) returned no results. The filter option values were lowercase strings (e.g. `in_progress`) but row data uses uppercase Prisma enum values (e.g. `IN_PROGRESS`), causing the comparison to always fail. Values are now aligned.
Starting today, every ioZen plan includes the full feature set. Submission Intelligence, hidden fields, rich content blocks, document extraction, ad platform integrations, outbound webhooks, and intelligence-aware routing are all available on Free, Pro, and Business.
What changes between plans is capacity. How many FlowApps you can run. How many AI credits you get each month. How many webhook endpoints and API keys you can manage. Your team size. Your storage. The features are the same; the headroom is not.
This matters in practice. A freelancer on Free can now build an IntakeBot with Submission Intelligence, see AI-scored tiers on every card, and route leads based on those scores. A growing team on Pro gets the same tools plus more FlowApps, more contacts, renewable credits, and API access. Business adds the highest limits and removes ioZen branding.
We also added the AI credit balance to the sidebar so you always know where you stand without going into settings.
The pricing page reflects all of this now.
Included in this release
Every plan includes the core pipeline: Intake Bots, content blocks, submission intelligence, and AI field intelligence, with unlimited submissions. Plans then differentiate on capacity (Intake Bots, FlowApps, credits, storage) and on power features. Pro adds API access, webhooks, attribution, ad platforms, and agent blocks. Business adds WhatsApp, Team Inbox, hidden fields, private and encrypted fields, submission analytics, and remove-branding.
A reliability and quality pass focused on billing accuracy and AI output.
Credit grant fix. A bug was causing admin-granted bonus credits to carry over permanently across billing cycles instead of resetting monthly. This has been corrected and affected accounts have been updated. Bonus credits now consume after plan-included credits and before purchased credits, and reset cleanly on each billing cycle.
AI generation improvements. IntakeBot generation prompts have been refined to produce better field selection and higher-quality schemas. Submission Intelligence scoring prompts now assign tiers more accurately. Template variable interpolation is more reliable across edge cases.
Billing architecture. All plan limit enforcement now runs through a single resolution path with consistent defaults. Admin-enabled feature flags now reflect correctly without requiring a page refresh. Credit purchase webhook writes are atomic, preventing partial failures from leaving accounts in an inconsistent state.
Included in this release
Refined IntakeBot generation prompts for better field selection and schema quality. Improved Submission Intelligence prompts for more accurate scoring and tier assignment. Hardened template variable interpolation engine with additional edge case handling.
Unified all plan limit enforcement into a single resolution path with consistent defaults. Feature flag overrides are now visible on the client — admin-enabled features render correctly without page refresh. Credit purchase webhook writes are now atomic, preventing inconsistent state on partial failures. Removed deprecated database column and eliminated duplicated constants across the billing stack.
Admin credit grants now use a dedicated bonus credit pool that is consumed after plan-included credits and before purchased credits. Bonus credits are automatically zeroed on monthly billing reset — fixing a bug where admin-granted credits would recur permanently every billing cycle. Existing affected subscriptions have been corrected. The admin credits dashboard now displays bonus credits separately.
Added global error boundaries with structured error reporting across all application routes. Unhandled errors are now captured with context and surfaced gracefully to users instead of blank screens. FlowApp pages include dedicated error recovery with retry actions.
Streamlined the IntakeBot field panel with unified create flow for fields and content blocks. Improved bookend (welcome/thank-you) editing with inline read and edit modes. Records table enhanced with better empty states, header actions, and overall polish. Template interpolation engine hardened with additional edge case handling.
Workspace routing now prefers workspaces with content over empty ones and intercepts pending invitations before routing. The invitation acceptance page shows contextual errors (expired, email mismatch, already a member, workspace full) with clear recovery actions — including sign-out-and-switch for email mismatches. Invited team members are no longer sent through onboarding; only workspace owners see the setup wizard.
March 2026
The biggest release since public beta. Three things that matter:
Submission Intelligence scores every submission the moment it arrives. AI analyzes answers against configurable dimensions and assigns a tier, so your team sees what’s worth acting on before opening a single record. Sales teams see Hot / Warm / Cold. HR teams see Strong / Moderate / Review. Support teams see Urgent / Normal / Low. You configure the dimensions and tiers to match your process, or let AI generate them during bot creation. Tier badges show directly on Process Board cards. Business plans can route submissions automatically based on scores. Costs 2 AI credits per submission.
Geolocation capture is a new field type for IntakeBots. Respondents tap “Share Location,” grant browser permission, and their GPS coordinates are recorded with a static map preview (OpenStreetMap tiles, no API keys, no dependencies). Every display surface shows a “Open in Google Maps” link. Built for inspection reports, field service, incident tracking, delivery confirmation, and property management. Available on all plans.
Deploy-first onboarding replaces the old “confetti on creation” flow. After AI generates your first FlowApp, you now pick how to deploy it: direct link with QR code, embed code for your website, email instructions to your webmaster, or a step-by-step guide for your CMS platform (14 platforms supported, including WordPress, Squarespace, Wix, Webflow, and Shopify). Confetti now fires on your first real submission, not on setup completion. Session state is preserved, so navigating away no longer resets your progress.
We also tightened security across the credit system and submission API: atomic billing-period resets, rate limiting on public credit checks, Zod validation on all IDs, cross-bot update guards, and a fix for purchased credit packs being ignored in AI availability checks.
Included in this release
New geolocation field type captures GPS coordinates from the user's device with permission handling, static map previews (OpenStreetMap tiles, zero dependencies), and Google Maps links across all display surfaces — submissions, records, process board cards, and CSV export. Onboarding reframed around demand capture with deploy-first completion: direct link, website embed, send to webmaster email, or platform-specific guides for 14 CMS platforms. First real submission triggers a celebration with confetti overlay and email notification. Session state persisted so navigating away no longer resets onboarding progress.
Consolidated credit service into a single source of truth with atomic billing-period resets, eliminating concurrent double-reset bugs. Public credit checks now rate-limited and response-sanitized — exact credit counts and plan tier details no longer exposed to anonymous callers. Submission API hardened with Zod CUID validation on all IDs, cross-bot update guards, and error responses that no longer leak schema structure. Geolocation permission policy and iframe allow attributes configured for secure cross-origin embedding. Fixed a bug where purchased credit packs were ignored in AI field intelligence availability checks.
Every submission is scored, tiered, and analyzed by AI at submission time. Configure dimensions and tiers for your use case: qualification, assessment, risk triage, project prioritization, or any intake process. Results appear as tier badges on Process Board cards with a full dimension breakdown in the submission detail panel. Route submissions automatically based on intelligence scores and tiers. Configuration is generated with the bot schema. Manual re-analysis is available from the Actions tab. Credits scale with the AI work done.
Three new AI-powered creation tools ship today. All three work the same way: you talk to ioZen in plain language, and it builds what you need.
Conversational Onboarding is the first thing new users see. Paste your website URL and AI figures out what your organization does, then suggests use cases matched to your role. Pick one (or describe your own) and ioZen generates your first FlowApp automatically. No clicking through setup wizards or reading docs first.
Smart FlowApp Wizard brings that same conversational approach to creating new FlowApps after onboarding. AI suggests use cases based on your organization’s profile, or you can describe what you need from scratch. You get a full proposal with questions, boards, phases, and routing rules. Review it, request up to two rounds of adjustments, and hit build. The whole thing takes about a minute.
Smart IntakeBot Create works inside any existing FlowApp. Open the creation panel and you’ll see AI-generated bot suggestions tailored to that FlowApp’s context. You can also describe what you need in plain language or upload a document and let AI extract the fields for you (Pro and Business plans). The result is a ready-to-use IntakeBot with all fields configured.
Under the hood, we also improved AI gateway reliability. Operations now have configurable timeouts (60 seconds by default, 300 seconds hard limit) and usage metrics are tracked independently from records. Deleting a record no longer wipes out the associated AI usage data.
Included in this release
Configurable AI operation timeouts (60s default, 300s hard limit) and decoupled metrics tracking so usage stats are preserved even when records are deleted.
Create Intake Bots through a conversational AI panel inside any FlowApp. Choose from AI-suggested bot types tailored to your FlowApp's context, describe what you need in plain language, or extract fields directly from an uploaded document (Pro+).
New workspaces now set up through a guided AI conversation. Enter your website URL and AI discovers your organization, suggests relevant use cases by role, and generates your first FlowApp automatically — no manual setup required.
Create complete FlowApps through a conversational AI wizard. Pick from AI-generated use-case suggestions tailored to your organization, or describe what you need in plain language. Review the full proposal — questions, boards, phases, and routing rules — and refine it with up to two adjustment rounds before building.
Three changes today, all focused on tightening up how hidden fields and content blocks work in practice.
Hidden fields are now a paid feature. The visibility toggle, publish panel, and embed code generation all check your plan before letting you use hidden fields. Free plan users see the option but can’t activate it. On the server side, submissions from free plans have hidden field values stripped out, so there’s no way around it. If you’re already on Pro or Business, nothing changes for you.
Content blocks auto-save every edit. The Save button is gone. Every change you make to a content block persists the moment you make it. This matches how the rest of the IntakeBot editor works and removes a step that tripped people up (forgetting to save, losing edits on navigation).
The template variable picker moved. Instead of typing / and scrolling through the slash menu to find field variables, there’s now a dedicated button in the rich editor toolbar. Click it, pick a field, and {{field_name}} drops in. Faster, especially when you have a lot of fields.
Included in this release
Hidden fields are a Business and Enterprise feature, gated on the visibility toggle, publish panel, and embed code generation. Server-side enforcement strips hidden field values on plans that do not include them and preserves them correctly on submission completion. Content blocks now auto-save every edit instantly. The rich content editor replaces the slash-command field variable picker with a dedicated template field button for faster variable insertion.
IntakeBots can do more than ask questions now. Content blocks let you insert guided text, calls to action, and personalized messages between fields. Every plan gets plain-text blocks. Pro and Business unlock the full rich editor, embeds, and AI-generated content. This takes conversational forms to a whole new level.
The rich editor works like Notion. Type / to open the slash menu and drop in headings, callouts, code blocks, or video embeds. You can embed YouTube, Vimeo, Loom, Cal.com, Calendly, Stripe Payment Links, and Google Maps directly inside the intake flow. Up to three CTA buttons per block can open modal overlays or link to external URLs.
Template variables make all of this personal. Use {{field_name}} anywhere in question labels, helper text, content blocks, or CTA URLs to reference what someone already answered. Arrays, AI-processed values, and all field types work. Private fields resolve to [Private] so nothing leaks.
AI content generation takes personalization further. Write a prompt, and AI generates unique content for each respondent at runtime using their previous answers as context. Good for mid-flow recommendations, summaries, or tailored next steps. Private fields stay out of AI context automatically.
We also published step-by-step integration guides for Meta Conversions API, Google Ads, LinkedIn, TikTok, and custom webhooks. Each covers credential setup, configuration, testing, and troubleshooting. Find them at app.iozen.ai/docs/integrations.
Included in this release
Author a prompt and let AI generate personalized content for each respondent at runtime, using their previous answers as context. Ideal for mid-flow recommendations, summaries, and dynamic guidance. Private fields are excluded from AI context.
Insert non-question content between Intake Bot fields: guided text, CTAs, and personalized messages. Rich editor, embeds, and AI-generated content are available on every plan. Content blocks display with a Continue button and support conditional visibility.
Step-by-step developer documentation for connecting Meta Conversions API, Google Ads Measurement Protocol, LinkedIn Conversions API, TikTok Events API, and custom webhooks. Each guide includes credential setup, configuration, and troubleshooting. Available at /docs/integrations.
Compose content blocks and CTA modals with a Notion-like slash-command editor. Embed YouTube, Vimeo, Loom, Cal.com, Calendly, Stripe Payment Links, Google Maps, and Typeform directly inside the intake flow. Up to 3 CTA buttons per block open modal overlays or external URLs.
Use {{field_name}} to personalize question labels, helper text, content block bodies, and CTA URLs with the respondent's previous answers. Supports all field types including arrays and AI-processed values. Private fields resolve to [Private].
Testing IntakeBots used to mean clicking through every field by hand. Test Autopilot changes that. Hit Auto-fill on any field to get realistic sample data, or hit Auto-play to walk through the entire bot start to finish. It generates locale-aware answers, handles AI follow-up questions with progressively detailed responses, and pauses on file uploads so you stay in control. Normal and fast speed modes let you watch the conversation or skip ahead.
Field duplication is here too. Select any field, click duplicate, and a copy drops in right below the original with a fresh variable name. Validation rules, AI settings, and conditional branches all carry over.
On the i18n front, Account Settings, Email Preferences, and the IntakeBot field editor are now fully translated into English and Spanish. Boolean fields default to Sí/No for Spanish bots, dates follow locale formatting, and test data matches the bot’s language. Under the hood, contact extraction switched to a schema-aware resolution map that eliminates guesswork on nested fields. Email notifications pull from contact mapping data directly, and inactive Postmark recipients get skipped instead of failing the whole job.
Included in this release
Fixed a critical bug where Yes/No (Sí/No) questions in Spanish Intake Bots would reject the user's answer and prevent the bot from advancing. Validation now respects the bot's configured language.
Contact data extraction now uses a schema-aware field resolution map for deterministic nested-path matching instead of suffix heuristics. Name mode sanitization prevents fullName and firstName/lastName from conflicting. Test submission contacts dedup reliably using a stable bot identifier.
Submission notification emails now use contact mapping data instead of heuristic field-name scanning. Postmark inactive recipients are gracefully skipped instead of failing the job. DLQ handler improved with proper QStash base64 decoding and richer error extraction. Submission email deep links now resolve correctly via a new redirect page.
Duplicate any Intake Bot field with one click. The copy is inserted directly after the original with a unique variable name, preserving all settings including validation rules, AI configuration, and conditional branches.
Account Settings, Email Preferences, and the IntakeBot field editor are now fully translated into English and Spanish. Validation messages, boolean option labels, and field duplication feedback all respect the user's locale.
Spanish Intake Bots now show localized boolean defaults (Sí/No), locale-appropriate date formatting, and Spanish test data when using the Test Submission feature. The public chat experience is fully language-aware end to end.
Auto-fill a single field or auto-play through the entire Intake Bot with realistic, locale-aware test data. Handles AI Socratic Negotiation retries with progressively detailed answers, pauses on file fields, and supports normal or fast speed modes.
Any IntakeBot field can now be marked as hidden. Hidden fields never appear in the conversation, but their values are saved with the submission and can drive conditional logic just like visible fields.
Values come from three places. Embed code attributes (data-fields) work for inline, popup, and widget embeds. URL parameters (?f.key=value) work for direct link sharing. And you can set static defaults in the field editor for values that stay the same across all submissions.
This opens up use cases that were impossible before. Pass a CRM record ID from your app into the IntakeBot so submissions link back automatically. Forward UTM parameters from your landing page into the submission for end-to-end attribution. Set an A/B test variant as a hidden field and branch conditional logic based on it. Track referral sources without asking the respondent anything.
Hidden fields are available on Pro and Business plans.
Included in this release
Mark any Intake Bot field as hidden to pass values silently via embed code or URL parameters. Hidden fields are never shown to respondents but their values are saved with the submission and can drive conditional branching. Values can come from embed data-fields attributes, direct link query parameters (?f.key=value), or static defaults set in the field editor. Available on Business and Enterprise.
February 2026
Three updates to how you manage data inside ioZen. The Contact Import Wizard walks you through uploading a CSV or Excel file and mapping columns to ioZen fields. Duplicate detection runs automatically with skip, update, or fill-empty strategies so your list stays clean.
Workspaces now have plan-tiered storage quotas. Free gets 100 MB, Pro gets 5 GB, Business gets 25 GB. Email alerts fire at 80%, 95%, and 100% usage so you’re never caught off guard. See the pricing page for full storage limits.
File upload size limits also scale by plan: 5 MB on Free, 10 MB on Pro, 25 MB on Business. Records that include file fields respect these limits at submission time.
Included in this release
Import contacts from CSV or Excel files via a multi-step wizard. Map columns to core fields, custom fields, and tags. Supports duplicate detection with skip, update, or fill-empty strategies. Auto-maps common headers and optionally creates new custom fields and field groups during import.
Workspaces have a plan-tiered storage quota: 100 MB on Free, 5 GB on Pro, 50 GB on Business, 500 GB on Enterprise. Uploads are blocked when the limit is reached, and workspace owners receive email alerts at 80%, 95%, and 100% usage.
File upload size limits are tiered by plan: 5 MB on Free, 10 MB on Pro, 25 MB on Business, 100 MB on Enterprise.
The ioZen developer platform is here. The REST API lets you read and write submissions, manage contacts, and trigger actions programmatically. API key authentication with scoped permissions keeps your integrations secure. See the Developer Tools guide for an overview.
Interactive docs at app.iozen.ai/docs cover every endpoint with request/response examples you can try from the browser. No guessing at payload shapes.
Outbound webhooks deliver real-time events to your endpoints with HMAC-signed payloads and automatic retries via QStash. When something happens in ioZen, your systems know about it immediately.
API keys are managed from Workspace Settings. Create keys with scoped permissions, rotate them when needed, and stay within per-plan rate limits. Pro gets 3 keys at 100 req/min. Business gets 10 keys at 500 req/min.
Included in this release
REST API for managing intake bots, submissions, and webhooks programmatically. API key authentication with scoped permissions, per-plan rate limiting, idempotency support, and interactive developer documentation at /docs.
Interactive API documentation at app.iozen.ai/docs. Covers authentication, all API endpoints, webhooks, error handling, pagination, and rate limits. Powered by Fumadocs with full-text search.
Real-time event notifications delivered to your endpoints. HMAC-SHA256 signed payloads, reliable delivery via QStash with retries, and automatic pause after repeated failures. Events include submission.completed, submission.updated, contact.created, and more.
Create and manage API keys from Workspace Settings. Scoped permissions, SHA-256 hashed storage, and Redis-cached validation. Pro plan: 3 keys, 100 req/min. Business plan: 10 keys, 500 req/min.
The ioZen team can now deploy promotion codes through Stripe. Use them to reward beta testers, support early adopters, or extend special pricing to specific customers. Codes apply to both monthly and annual billing plans.
Included in this release
Promotion codes now accepted during Stripe checkout. Create discount campaigns and share promo codes with potential customers for reduced subscription pricing.
Multi-select fields in the public IntakeBot chat were showing duplicate chips when picking multiple values. Validation was also rejecting valid selections in some cases. Both issues are fixed. Multi-select fields in conversational forms now render and validate correctly regardless of how many options you pick.
Included in this release
Fixed rendering and validation of multi_select fields in the public Intake Bot chat. Duplicate chip options no longer appear when selecting multiple values.
Three billing fixes in this release. A race condition during plan changes could cause subscriptions to enter an inconsistent state. Credit-status polling was firing too aggressively under load. The upgrade dialog was redirecting to the billing page instead of straight to Stripe checkout. All resolved. View current pricing plans.
Included in this release
Fixed subscription race condition during plan changes, resolved credit-status polling storms, and corrected upgrade dialog redirecting to billing page instead of Stripe checkout.
A round of infrastructure and UX polish. The email system moved to a scalable architecture with separate transactional and broadcast streams via Postmark. Deliverability is better and onboarding sequences are now possible.
Workspace routes show a mobile access gate on small screens, directing users to the desktop experience. A quick email link lets you open the app on your computer without hunting for the URL.
The AI FlowApp generation wizard now shows parallel progress indicators and smoother motion transitions. Generation status is tracked on the FlowApp model so state stays reliable even if you navigate away. IntakeBots created by the generator include all field types and conditional logic from the template.
Included in this release
Email system refactored to a scalable architecture with separate transactional and broadcast streams via Postmark. Improved deliverability and support for onboarding sequences.
Workspace routes now show a mobile gate on small screens directing users to the desktop experience. A DESKTOP_LINK email lets users quickly open the app on their computer.
AI FlowApp generation wizard now shows parallel progress indicators, improved AI operation feedback, and smoother motion transitions. Generation status tracked on the FlowApp model for reliable state.
ioZen moved from private alpha to public beta. Anyone can sign up, pick a plan, and start building. Stripe billing went live alongside this release.
Row-Level Security is now enabled on all remaining public tables. Function search paths are locked down and RLS policies are tightened to prevent cross-workspace data access.
Process Board limits got a bump too. Free goes from 3 to 5 boards, Pro from 30 to 50. This prevents hitting the ceiling during AI-powered FlowApp creation, which generates boards as part of the setup flow.
Included in this release
Minimum password length enforced at 8 characters. Passwords checked against known breach databases with clear error messages when a leaked password is detected.
Free plan Process Boards raised from 3 to 5 and Pro plan from 30 to 50. Prevents frustrating failures during first-time AI-powered FlowApp creation.
ioZen is open for business. Open registration with Stripe billing, onboarding email sequences, and plan-enforced limits. Free plan includes 3 FlowApps and 1,000 AI credits.
Row Level Security enabled on all remaining public tables. Function search paths locked down and RLS policies tightened to prevent cross-workspace data access.
Three tiers let you add AI credits when you need them. Boost (1,000 for $10), Growth (5,000 for $40 with 20% savings), Scale (10,000 for $70 with 30% savings). Purchased credits never expire, so you use them at your own pace. View all pricing options and credit packs.
Included in this release
Purchase additional AI credits on paid plans. Three tiers: Boost (1,000 for $10), Growth (5,000 for $40, 20% savings), Scale (10,000 for $70, 30% savings). Purchased credits never expire.
A full responsive overhaul across the app. Navigation, panels, boards, and settings all work on mobile viewports now. Legacy layout code is cleaned up.
The iOS keyboard bug that overlapped the chat input in embedded IntakeBots is fixed. Viewport management and iframe height adjust correctly across inline, popup, and widget embed modes when the keyboard appears.
Marketing Attribution Tracking moves to Pro and above. Field-Level Conversions, Webhooks, and Ad Platform Integrations (Meta, Google, LinkedIn, TikTok) are now Business-only. Clearer value separation between pricing tiers.
Included in this release
Attribution tracking, field-level conversions, webhooks, and ad platform integrations (Meta, Google, LinkedIn, TikTok) are available on Pro, Business, and Enterprise.
Fixed virtual keyboard overlapping the chat input on iOS Safari across all embed modes (inline, popup, widget). Viewport management and iframe height now adjust correctly when the keyboard appears.
Comprehensive responsive redesign across the entire app. Navigation, panels, boards, and settings all work on mobile viewports. Legacy layout code cleaned up.
The core infrastructure for public launch. Stripe billing lets you subscribe to Pro or Business, manage your subscription from workspace settings, and switch between monthly and annual billing with prorated charges. See current pricing plans.
Process Board cards, contact changes, and record updates now sync across all connected users instantly via Supabase Broadcast. Multiple team members can work on the same board without refreshing.
Drag-and-drop on Process Boards was rebuilt with @dnd-kit for smoother card movement, better touch support, and more reliable phase transitions. The embedded IntakeBot widget also adapts to mobile viewports now. Floating button, popup, and inline modes all resize correctly on phones and tablets.
Included in this release
Process Board drag-and-drop rebuilt on @dnd-kit for smoother card movement, better touch support, and more reliable phase transitions.
The embedded IntakeBot widget now adapts to mobile viewports. Floating widget button, popup modal, and inline embeds all resize correctly on phones and tablets.
Process Board cards, contact changes, and record updates now sync across all connected users instantly via Supabase Broadcast. Multiple team members can work on the same board without refreshing.
Full subscription management powered by Stripe. Subscribe to Pro or Business plans, manage billing from workspace settings, and switch between monthly and annual billing with prorated charges.
Controlled access for the beta phase. New users need an invitation code to sign up, and workspace collaborators can be added directly. Beta applications are tracked through a dedicated IntakeBot.
IntakeBot field schemas now stay in sync with their linked RecordType automatically. Changes to one propagate to the other, reducing manual work and preventing data mismatches between what gets collected and what gets stored.
Included in this release
Controlled beta access via invitation tokens. New users need an invitation code to sign up, and workspace collaborators can be added directly. Beta applications are tracked through a dedicated IntakeBot.
IntakeBot field schemas now stay in sync with their linked RecordType automatically. Changes to one propagate to the other, reducing manual work and preventing data mismatches.