Product
Monty is in beta. This is the record: what shipped, when, and what it changed for you.
144 changes since 9 August 2026
An email sent on Autopilot costs 1 credit, the same as one you approve.
It was 2: one for writing the email and one more when it went out. Now writing it is the whole charge, so a plan’s credits go twice as far on Autopilot, and a campaign’s cost estimate drops to match: a new campaign for ten contacts is quoted 12 credits, not 22.
The pricing page overstated what the plan buys.
It led with “≈ 88,000 cold emails”, which is what 100 mailboxes could send in a month, not what the plan’s credits pay for. It now says about 18,000 emails with their replies answered, whether you approve each one or run Autopilot. It also stopped listing email verification, which is not offered, and the credit table in our Terms now matches what billing charges line for line.
“How it works” in the website menu opened a blank page.
The page now lives at /how-it-works, and the old address forwards there.
The website no longer offers a CRM connection we do not provide.
The help centre and the How it works page said you could connect HubSpot or Salesforce. Contacts come in as a CSV today; the help article says how, and who to tell if you need a live sync.
Right-clicking a contact opens the menu where you clicked.
It opened a few hundred pixels lower, next to a different contact, and ran off the bottom of the screen near the end of the list.
Adding a contact to a campaign shows what you are picking.
Filter campaigns by status, see how many contacts each already has, and read before you click that a draft or paused campaign will not send until it is launched or resumed.
Contacts has one filter bar.
Search and Add contacts sit on top. Below, one bar filters on the left and sorts and groups on the right, and a filter only lights up once it is doing something.
Assigning an owner is a proper menu, with each teammate’s name and email.
Steps in Monty’s training plan open the page they are about.
Each one used to open a popup with a smaller copy of a settings page. They now take you to the page itself, and a step ticks once the work is done there.
“Tell us about you” starts filled in from your onboarding chat.
Only what you actually said: the name you gave Monty and the goal you picked. Anything you saved yourself wins, and nothing is saved until you press Save.
The Reply button on a contact is gone for now.
It failed with a generic error, and it cost credits to try. When a prospect writes back, Monty drafts the answer in Drafts, as before.
Autopilot now runs on autopilot.
Every campaign Monty drafted was quietly pinned to Review, and a campaign’s own setting outranks the workspace switch — so flipping the switch to Autopilot changed nothing for any campaign you already had. Campaigns now inherit the workspace level unless you set one on purpose, the pill and the Activate dialog say what will actually run, and a draft Monty held back says why it was held.
Test a hypothesis, not two bodies.
Pick one thing to test — how the email opens, what it argues, where the ask sits, its shape or its register — pick two or three versions of it, and launch with no copy written. Monty writes each send to the version it was given and records, per send, whether it actually followed the rule. A test Monty follows in fewer than seven sends in ten reads “Not measuring its factor” and cannot be promoted, because its result would be about nothing. Up to three run per campaign on different factors.
A mailbox import needs only the address and the password.
Server names and ports are filled in from the domain, and the preview says what it chose. Where a provider’s export has both a Password and an App Password column, the app password wins whichever comes first, because that is the one that logs in. A Google row without a 16-letter app password is refused at upload with the sentence that says what to generate and where, instead of a generic failure per row afterwards. Every rejected row has a button out: download the failed rows, open the provider’s guide, or retry.
The suggestions under Monty’s answers are about the answer.
Pasting an error from your CRM used to get a strip of page links, four canned actions and a card of business knowledge, none of which came from the question. Page links now need a real match, actions come from what Monty actually did that turn, and the knowledge card is only drawn when something matched — and shows what matched.
A CRM connection that fails tells you the CRM’s reason.
A HubSpot account that had run out of API allowance showed a generic error linking to a reference page. The connection now shows HubSpot’s own message, and is marked as needing attention the same way a bad credential is.
Saving your profile failed every time.
A security tidy-up had removed the permission that let you write your own profile row. Reported by a beta tester; the permission is back and a name is asked for once per session rather than on every visit.
The support form on the website returned an error.
Newly added contacts looked as if they had already been contacted.
Enrolling a contact in a campaign stamped a last-contact date on them before any email had gone out, so the strategist’s preview could say no one was available to email and the contact list said otherwise. Existing rows have been repaired.
A redeemed beta code showed as the Starter plan.
Redeeming a code granted the access but wrote no subscription record, so the plan card read Starter, the billing period followed the calendar month, and saving a spend threshold returned an error. The grant is a real subscription now, with the period it was actually given.
“Drafting…” no longer spins forever and leaves duplicate campaigns behind.
The browser gave up on the request after ten seconds while Monty was still writing, so the screen stalled and a second click made a second campaign. Writing requests now get the time they need, and a repeated request returns the campaign the first one made.
The campaign list loads in a fraction of the time.
It was making around sixteen sequential requests per campaign to a database on another continent. Those go out together now.
Sending settings show each mailbox’s daily limit.
Placeholder text cannot be launched in an A/B test.
Copy still carrying a [TODO: …] marker was accepted by the test composer. It is refused now, the same way Activate refuses it.
A rewrite that hits the cache, or a quality retry, no longer costs credits.
Token-metered debits are also reconciled against what was actually used rather than what was estimated.
Every campaign strategy Monty proposed came from a template.
The strategist’s instructions were never shipped in the production build, so every card since the feature launched was the fallback, badged “Template, not from your brief”. They ship now. Until this deploy, nothing the strategist wrote came from what you told us.
“Create this campaign” now puts the audience in the campaign.
It saved the audience definition and enrolled nobody until Activate, so a freshly created campaign’s Contacts tab read 0 and sent you to the picker to add them by hand. Contacts are enrolled at creation, and a campaign of five to ten thousand contacts is treated as the normal case: adding contacts is batched, and the picker can add everyone who matches in one action.
Each kind of document you upload is read by its own rules.
A case study, a pricing sheet, a sales deck and a policy document do not hold the same kinds of fact. Knowledge extraction now identifies the type and applies the rulebook for it, so what it pulls out is what that document is for.
A blank cell in an import no longer fails the row.
For two days, any new row with a single empty mapped column was rejected. Company size is blank on most real lists, so a whole file could fail. Fixed, with a test that reproduces the exact failure.
Imported columns are real fields.
Every column that came with your file can now be shown as a column, sorted, filtered, edited in place or in bulk, and exported — the same verbs as any built-in field. Negating a filter keeps the rows that do not have the field at all.
A list you had already verified stays verified.
A verification verdict column in your CSV was stored as loose data, so a book of bought verdicts read as unverified and would have been checked again. It now lands where Monty’s own verifier writes, shown as “Verified (from file)”.
The import review names every column and what will happen to it.
In file order: stored as a field, used to match, kept as imported data, scored after import, or not stored. Only a column that will not be stored is a warning.
The “Has replied” filter matched nobody.
It read the timestamp of when we first replied, not when they did. It reads the right one now, and in a workspace where that field is not yet available it says so rather than showing zero.
“Has a next step” never cleared.
A suggestion counted as a next step forever, even after it was done or Monty had nothing further to say. Suggestions now expire after fourteen days and are retired when acted on.
Sorting contacts across imported and CRM sources was two lists pretending to be one.
Sorted by fit score, every imported contact came after every CRM one whatever their scores. Up to a thousand rows the two are interleaved properly; past that the toolbar says the sort is per source.
A filter value with a comma in it was split in two.
“Acme, Inc” became two companies. The filter builder also holds Apply until every row is complete rather than silently dropping half-filled ones, and gains “Not contacted for (days)”.
Deleting a few hundred contacts stopped at a hundred with an error.
Each contact was deleted with dozens of round trips to the database, and the browser gave up before the fifth batch. Deletion is now one request per table per batch, and the contacts page itself makes three round trips where it made eleven.
Table cells clip instead of overflowing, rows are one colour, and a column resize lets go.
Bring your own inboxes, in bulk.
A CSV of mailboxes from your provider becomes connected, verified sending mailboxes. A mailbox connected over IMAP now sends through its own server rather than through ours.
Hand your Google Workspace connection to IT.
Send your administrator a link; they grant access once for the whole team and you pick which inboxes to use. Microsoft 365 admin consent is built but has not been exercised against a live tenant yet, so it is not offered.
Email verification, included in your plan.
Verify an address, a list, or a whole campaign’s contacts from the contacts page, the campaign or the contact profile. An address that comes back invalid is skipped by the queue rather than bounced. The result and its date show in the Email verified column.
Teams: a campaign, a mailbox and a contact know whose they are.
A rep’s campaign leaves from their inbox in their voice, the reply comes back to them, and a meeting lands on their calendar. Numbers can be read per owner, and a member seat can do a member’s job without an admin.
A large import lands in bulk.
Thirty thousand contacts in a month were being written one row at a time. Inserts and campaign enrolment are batched now.
Sending is shared across your mailboxes.
The send path rotates through a pool of mailboxes with per-mailbox warmup, backs off when Google or Microsoft ask it to, and quarantines a mailbox that starts bouncing.
Edit any contact field, one at a time or in bulk, with history and undo.
Inline or in a dialog, and in bulk with set, clear and replace. Every change records who made it and from where, and a batch can be undone — undo only restores a field that still holds what the batch wrote, and reports the rest as changed since. Two people editing the same contact are told, not overwritten.
Re-importing a CSV is a diff, not an overwrite.
Choose what wins on a conflict: your edits (the default), the file, or fill only what is empty. A blank cell clears a value only if you ask it to, and the preview says how many it would. Unchanged rows are not counted as updated.
A CRM sync no longer wipes what you added to a contact.
Any row carrying edit history or pinned facts looked changed on every pull, and the rewrite erased them. The pull now merges around what is ours.
Deleting a page of contacts left “0 of 606” with nothing loaded.
Rows are hidden as each delete is confirmed, but nothing refetched afterwards. The page refetches once the delete settles, the count comes down as rows go, and a page that ends up past the end steps back.
Select everything the current search matches.
Deleting a whole book meant ticking “select all on this page” twenty-two times. Once a page is fully selected the bar offers every contact the current filters, search and segment match, up to five thousand. Progress is live, and leaving the page mid-delete asks first.
Importing a list threw away every column it did not recognise.
The mapping screen said unrecognised columns would be stored; they were dropped before the first write. A buying signal you had paid for — traffic trend, hiring, funding — never reached Monty. Every column now lands under its own name, a later import with fewer columns cannot erase what an earlier one supplied, and a negative number keeps its sign: an 18% decline was being stored as 18% growth.
Imported signals reach the writer, and are never stated as fact.
Both cold emails and follow-ups now see the columns you imported. Because an imported column has no source we can point to, Monty may use at most one as the premise of an opener — phrased as a guess the reader can correct — and never cites a figure from it.
Control the writing per message type, in your words.
Cold emails, follow-ups and replies each get their own beats — what the email covers, in order — and their own never-say list, with anything unset inheriting from your account default. The five copy rules (length, question, call to action and so on) can be set per type too, so “replies stay under forty words” no longer shortens your cold emails. Settings › Voice for the default; the style card on a campaign for that campaign.
A campaign is billed what it was quoted.
Three defects, one shape: a number you were shown and a different number the ledger took. A draft could be billed three or four credits against a quote of one. A campaign strategy was quoted at two and debited nothing. An autonomous send was checked against your balance and then never charged. Every action the pricing page quotes is now a flat price, so the ledger cannot exceed the site.
The inbox is a reply desk.
Replies are sorted into lanes by what the prospect did — wants to meet, asked a question, pushed back, said later, referred you on, needs a human — with alerts and a waiting clock set per lane, and a recommended next action that is only ever a recommendation. “Approve everything” is never offered on an objection, because an objection answered in bulk is an objection nobody read. Manual, Assisted and Autopilot mean the same thing on every screen and on the website.
Analytics says how long a prospect asking for a meeting waits for a person.
The metric had shipped as a sentence explaining why it could not be computed. It can now. Where the server still cannot compute it, the page shows the server’s sentence, never a dash or a zero; a figure from too small a sample keeps its number and loses its colour.
Contacts showed an empty list over a count of 606.
One optional column killed the whole read on both sources while the count survived. The page now drops that column and keeps your contacts, and the banner no longer blames “one of these filters” for a read that failed.
Newsletters and automated mail are not replies.
A marketing blast arriving in a connected inbox could be drafted an answer. It is recognised and held now, and an unsubscribe request names the campaign it came from and is counted against it.
If Monty cannot confirm your send limit, it stops rather than sends.
A limit it could not read used to be treated as no limit.
Timing settings for follow-ups can be reached.
The settings card existed and was mounted nowhere. A reply that goes quiet gets one bump, and a reply from a colleague or a second address is resolved to the same thread.
Follow-ups thread onto the first email.
They left as detached “Re:” messages the prospect’s mail client could not connect to anything.
Someone who replied is re-engaged only if they went quiet on our last message.
Not while the ball is in our court. A contact who leaves the company also closes their place in the queue, so campaigns complete.
An A/B test cannot say “Winner found” unless it is one.
An underpowered result that happened to reach significance now reads “Leading, not proven”, with the status sentence always shown. Activating a campaign also no longer opens an automatic “tone test” two of whose three arms could not send.
Before you launch a test, it tells you when it will have an answer.
Sized from the campaign’s contacts, pace and reply rate at the lift you chose: a date, or “never”. The running card reports against the lift it was sized for.
A Sequence tab.
Build a sequence by hand or clone one, with a live check on the copy. Send a test to yourself. See which test or promoted winner is currently sending email one, and write it into the sequence.
Analytics has a date window and a CSV export; contacts can be exported in full.
Blocked domains.
A list of domains Monty will never email, whatever the campaign.
The drafts queue is back in the navigation and the bell, and every refusal to Activate says why.
A cold email received zero facts about the person it was written to.
The research Monty gathered was assembled for rewrites and replies but never for the first email, so the blocks meant to carry it rendered empty. It reaches the cold email now, each fact with its date and source, and the follow-up template gained the placeholders it had been missing — every assembled block was being dropped before it reached the model.
Monty proposes strategies from your brief.
Three to five grounded strategies, each with an audience built only from fields your contacts actually have, and one click creates the campaign from the one you pick. See 15 September: until then the strategist’s instructions were missing from the production build and every proposal was a template.
A sequence step can react.
Per-step rules on open, click and reply, a daily send limit per sequence, and a proper cursor so a contact part-way through continues from where they are. Steps only ever jump forward: a backwards jump plus a prospect who opens everything is an infinite resend.
Contacts you can actually segment.
Filter by industry, location, company size, title, seniority, country, timezone, stage, status, fit, tags, owner, campaign (including “in no campaign”), sequence step, last contacted, replied, meeting booked, has phone, email verified and source. Save a segment and use it on the contacts page, in the campaign picker and in the audience builder. Bulk tag and bulk assign an owner. Filters live in the URL, so a view can be shared.
Contacts search reached page two.
Search ran in memory over an unbounded download of your book, twice per page load, and the second page was unreachable. Company filters also silently dropped every contact Monty had already worked on, because those fields lived in a table the query never joined.
The dashboard’s meetings count counts meetings.
Its only writer needed a state nothing wrote. A calendar booking, a manual “Meeting booked” on a contact, and a booking link all count now, each attributed to the campaign and step that earned it, against a monthly target you set.
Every contact has a fit score and a lane.
A one-to-five fit against your profile, one of six outreach lanes, and an account rank, shown on the contact and usable as a filter. Fit sorts and labels; it never decides who gets worked on.
Group contacts by account, and filter by seat and geography.
A campaign can show its own history, by day or by week.
A holiday auto-reply ended the sequence.
An out-of-office was read as a reply, which stopped the follow-ups for good. It is recognised now, and the follow-ups resume.
The attention badges counted things you had already dealt with.
“Card on file” was asserted about a wallet nobody had checked.
Two messages sent you to perform a step that no longer exists.
Put your logo on outbound email.
Attachments are not possible on the sending path we use; that limitation is written down on the settings page rather than left to be discovered.
Export your whole book as one CSV.
Your original columns plus everything Monty has added to each contact.
The website crawl is visible and deduplicated.
You can see what was read from your site, and the same page is not stored twice.
A campaign’s positioning now beats the workspace’s, and says so.
Most of the contacts you imported were never worked on.
A score computed from the CSV row decided who Monty would email. Contacts scoring between 21 and 69 — the widest band, and the one that means “we don’t know yet” — were left in a waiting room they never left. One workspace had 611 contacts and zero of them eligible. Fit now sorts and labels and never excludes; the only things that stop an email are your suppressions: do-not-contact, unsubscribe, bounce and erasure.
An account without a card could owe £899 and be chased for it.
Also fixed on the same pass: an account whose payment record had been removed on our side saw a permanent error on the billing page, and “Manage subscription” offered a Try again that could never work.
Approving a draft without editing it never sent it.
Adding contacts to a campaign showed you none of them.
If your contacts arrived through an import — which is how most of them arrive — the picker searched the wrong place and came back empty, then told you every contact you had was already in the campaign. On a campaign with nobody in it, that was simply untrue. It now searches both, says which is which, and when there is nothing to show it tells you the actual reason.
Filter and search the contacts you are choosing between.
Search now runs across every contact you have rather than the most recent two hundred, so typing a name finds it. There are filters for imported or CRM contacts, status, whether someone is already in another campaign, and whether they have a company name.
See the email before anyone receives it.
Every step of a sequence, and both sides of an A/B test, can now be previewed as a real contact from that campaign would receive it. It fills in the merge fields exactly as the sender does and no more generously — so a tag this contact cannot fill stays visible, because that is what would arrive.
Monty writes the other side of an A/B test.
Write the control, pick what you want to test — shorter, opens with a question, leads with proof, asks straight out, plainer — and Monty writes the challenger from it, changing that one thing. It is a starting point to edit, not an answer.
Imported contacts no longer disappear from the campaign you added them to.
They were added, and then the campaign reported having no contacts at all. They are listed and counted now, and labelled: an imported contact is in the campaign but is not emailed until it is promoted, and the old screen gave you no way to know that.
You are quoted in the currency you are billed in.
The billing page read your profile and the credits page read your browser, so an account billed in pounds could be shown top-up prices in euros — underneath a line saying the setting was saved to your profile and used at checkout. There is one source now, and it is your profile.
Changing the display currency no longer changes what your plan says it costs.
Switching to another currency rewrote the Current plan card, so a subscription actually billed at £499 a month could read $699. A price list can be shown in any currency; a charge you are already committed to cannot, and that card now comes from the subscription itself.
Billing pages stop printing numbers they cannot stand behind.
During a backend problem the page kept showing a balance, a burn rate and a full transaction table with nothing to say anything was wrong. A figure we cannot load now reads as unavailable, and says plainly that nothing has been charged.
Your transaction history stops changing between page loads.
The running balance beside each entry was worked out in your browser from the current total, so the same transaction could show one balance on one visit and another the next. It is worked out on the server now, and where it cannot be stated honestly it is left out rather than guessed.
“Where your credits went” agrees with your transaction history.
The two read different sets of records over different periods, so the breakdown could describe activity the table below it did not contain. Both now cover your billing period across your whole workspace.
Your full payment record, exportable.
Purchases, refunds and monthly allocations are kept permanently and you can now actually see them: an All time range, a CSV export, and staff adjustments filed as adjustments rather than as things you bought.
In-app top-up prices match the prices on our pricing page.
Converting between currencies rounded up twice, so the app quoted £230, £510 and £905 for packs advertised at £225, £500 and £900. Both now come from one place, and a test fails the build if they ever drift again.
Our pricing page quotes what a reply actually costs.
A handled reply moved to a flat 3 credits and the pricing page went on saying 2. Nobody was charged the wrong amount — billing has always charged 3 — but the site was under-quoting what a plan covers, so the emails-per-month figures on it were too high. They are now the real ones.
A failed billing action tells you what happened, next to the button you pressed.
It used to print a raw error at the top of the page — off-screen on a phone — so tapping Update appeared to do nothing at all. Errors now sit beside the control, in plain words, and say whether anything was charged.
The renewal date, on the page that was telling you to contact support for it.
Billing said the renewal date was unavailable while the Credits page, one click away, showed it. Both read the same field now.
The billing and credits pages work with a keyboard and a screen reader.
Section headings are real headings, errors are announced, table headers say which column they belong to, and the closed assistant panel no longer holds thirteen invisible controls in the tab order — that last one affected every page in the dashboard.
Write a campaign’s emails from a prompt.
Describe what the emails should do and Monty writes the sequence — one email or up to eight, with the wait between them. It offers a starting prompt built from what you have told us about your business, which you are meant to edit rather than accept. Campaigns you built yourself had no sequence at all before this: every contact got one email and no follow-up.
“Edit the emails” now leads somewhere you can edit them.
It sent you to a page that showed the subject and body read-only, so the product’s own instruction at its own failure point could not be followed. There is a real editor now — subject, body, and the wait before each follow-up — on draft and running campaigns alike. The wait was never editable in any released build.
A campaign you have fixed no longer refuses to activate.
When Monty fell back to template copy, Activate blocked with “review the emails first” — and kept blocking after you had rewritten every one of them, because nothing recorded that you had. Editing the copy is the review it was asking for.
Asking for a different draft no longer leaves a duplicate campaign behind.
Pressing Draft again created a second campaign and a second sequence, so three attempts left two orphans in your list. It now rewrites the campaign you are looking at, and takes a note on what to change.
An A/B test can take over what a campaign actually sends.
Until now a test never changed the emails that went out, so its reply rates described copy nobody had received. Turn this on for a campaign and the variant becomes the email — still personalised per contact, but the wording being tested is left alone. Off by default, per campaign.
Choose whether a test picks its own winner.
When a test clears its confidence threshold Monty can complete it and name the winner without asking. Deliverability still decides: a variant ahead on replies but behind on bounces or unsubscribes is never chosen.
A variant losing on bounces or unsubscribes can no longer be named the winner.
The deliverability check ran, and ran too late — the winner had already been recorded by the time it refused, so every screen showed it as the result.
A test set to run on a share of your contacts counted every send.
A test allocated 10% of traffic had all 100% written into its totals, including the nine in ten contacts it had deliberately skipped. Its reply rate was measured against people the test never touched.
Two campaigns testing the same idea no longer share one test.
Running the same subject-line pair on a second campaign returned the first campaign’s test. The second campaign appeared to own it, showed its numbers, and could have its winner applied from somewhere else.
Deleting a test works, and says so.
Delete reported a failure after it had already succeeded, so the test looked stuck until you reloaded. Seven other places in the product reported the same false failure and no longer do. Finished tests can also be cleared in one action.
Optimization says it is experimental, and tests Monty started say so.
The page carries a badge rather than leaving you to work out which parts are finished, and any test the optimiser opened by itself is labelled as its own rather than reading like something a colleague set up.
An empty audience filter no longer selects everyone.
Building an audience and leaving the filter blank matched every contact you have, and the confirm step said how many only after you had clicked. It now refuses an empty filter rather than treating it as “all”.
Campaign and inbox pages stopped re-asking the same questions.
Three endpoints were being called up to seven times per page view. Same screens, a fraction of the requests, and figures that no longer flicker while they disagree.
Approve on a draft no longer sends it the moment you click.
Approve sat inline on the row, one position from Reject, and sent immediately — with no confirm and nothing to undo. It opens the draft now, and sending is a separate decision.
A campaign that never sent anything no longer reports a 100% reply rate.
Rates were computed against attempted sends rather than delivered ones, so a draft with a single reply and no deliveries read as perfect.
One thread per conversation in the inbox, and a count that matches the list.
Cancelling your plan gives you the invoice, not an error page.
Download returned raw JSON to the browser at the one moment a customer most needs a clean record of what they paid.
The review queue shows the lead, not the classifier's working.
Mailbox connect only offers providers that are actually switched on.
The buttons now ask the server which providers exist, so you cannot start a connection that was never going to finish.
A proposal tells you when it expires while you can still act on it.
Warmup mail is dropped at the webhook the same way it is dropped at the poller.
Two ways in, one rule — warmup traffic was reaching the inbox through the faster of the two and reading as real replies.
Every screen says Monty is in beta, and where our security review stands.
The marker in the header opens a plain summary of what beta means here, and links to a full status page. It appears before you connect a mailbox rather than after.
Deleting a mailbox deletes it.
It used to disappear from the list while staying connected underneath.
Replying from the inbox opens the draft you asked for, not an empty queue.
The unread marker decays instead of flagging every thread.
Marking everything unread is the same as marking nothing unread.
The dashboard figures agree with each other.
The lead count was counting imported rows that had not yet become leads, so it read far higher than the list below it.
Monty can see your workspace again.
Four of the lookups behind its answers were returning nothing in production, so it answered from general knowledge instead of from your data.
The in-app guide answers instead of erroring on every question.
Keyboard and screen-reader pass over the inbox and thread views.
Long lead and inbox lists stopped hiding rows between pages.
Work out what a plan costs you before you buy it.
Pricing now converts your own reply and follow-up volumes into credits, so the number on the page is yours rather than an average.
Links with anything after a ? loaded a blank page.
Password resets, Google sign-in and any link carrying campaign tags were affected. The page returned normally and rendered nothing, which is why it went unreported for as long as it did.
Credit packs are priced in your currency, not US dollars only.
Export or delete everything Monty holds about a contact.
Subject-access and erasure now cover every table that stores lead data, not only the main one.
Inbound replies stopped being lost.
An error in the reply handler was discarding them before they reached your inbox.
Settings holds the business details your outgoing mail is required to carry.
A CRM connection that has gone stale says so, and can be reconnected.
It used to fail quietly and look healthy.
Google Drive tokens are encrypted at rest.
A prospect who replies stops receiving the rest of the campaign.
A reply containing “unsubscribe” suppresses that contact everywhere.
Pushing past 100 leads to your CRM works, and no longer duplicates contacts.
Only changes that have shipped and that you could notice by using the product. No roadmap, no internal work dressed up as a release, and no numbers we cannot show you the source of.
Fixes are listed alongside features. A page that only lists wins tells you nothing about how the product is actually going. If something is broken for you and it is not here, we would rather hear about it: hello@montyai.co.
Bring the list. Monty writes the first campaign, and you read it before it goes.
Start with your listRead the security and beta status first if you would rather.