Product updates for BulkForge: what changed, why it matters, and whether you need to do anything.
Plans
1-year term, billed monthly, on Starter and Pro
What changed
Starter and Pro can now be bought on Microsoft Marketplace as a 1-year term with the same monthly price ($49 and $199). The 1-month option is unchanged.
Why it matters
The subscription runs for the full year without a renewal decision each month. Microsoft emails a renewal reminder 30 days before an annual term ends.
Do you need to do anything?
Nothing to do. An existing subscription stays as it is. A 1-year term is a 12-month commitment: after the first 72 hours it cannot be cancelled until the term and its payments are complete, so choose it only if you expect to use BulkForge for the year.
Dashboard
Subscription renewal shown in the dashboard
What changed
The main dashboard page now shows when your subscription term ends and whether auto-renew is on. If it is off, the page explains how to turn it on, and highlights the notice when the end date is close. If you bought through a reseller, it tells you to ask your reseller instead.
Why it matters
A Marketplace subscription renews only if auto-renew is on, and it is off by default. Only you (or your reseller) can turn it on, so we show the date and the steps where you will see them.
Do you need to do anything?
Check the notice. If auto-renew is off and you want to keep BulkForge, turn it on from the SaaS page in the Azure portal. Details are under Your Subscription and Renewal in the install guide.
Dashboard
Subscribing again keeps your agent setup
What changed
If your subscription ended and you subscribe again from the same Microsoft tenant and BulkForge account, your earlier agent is reconnected instead of a new one being created. Your sender, routing and delivery settings and your job history are kept. You get a new Agent Key, and the old key stays disabled. Jobs that had not finished when the subscription ended are marked abandoned. An ended agent also no longer counts against your agent limit.
Why it matters
Coming back after a lapse no longer means setting everything up again.
Do you need to do anything?
Only if you re-subscribe: put the new Agent Key in your Function App’s AGENT_KEY setting. Steps are under Rotating Secrets in the install guide.
Agent 3.6.1
Agent 3.6.1
What changed
Sending Performance now shows each provider on its own (Postmark, SendGrid and Azure). Postmark and SendGrid senders see their figures for the first time.
For each provider you see when it last accepted a message, its last error in plain words, a warning if it refused your key, and how many recipients are in Outcome unknown.
A note appears when progress reports to BulkForge had to be retried or did not get through.
Only counts, times and short codes are reported. No recipient addresses or message content.
Why it matters
If sending slows or stops, you can see which provider it is and why, without opening your provider’s own dashboard first.
Do you need to do anything?
Optional. Older agents keep working and show the previous panel. To update, see Updating the Agent in the install guide, ideally when no send is in progress, because the update restarts the agent.
Agent 3.6.0
Agent 3.6.0
What changed
The agent tests that it can read your provider credentials and reports the result to BulkForge, so a setup problem shows up before your first send.
A dry run plans a send without contacting any provider, so you can see how many requests it would take.
An unconfirmed send stays Outcome unknown on every provider (Postmark, SendGrid and Azure). If a provider gives no answer, or an answer the agent cannot read, those recipients are not sent again on another channel.
Why it matters
You find a broken setup before a real send, and a message that may already have been delivered is not sent a second time.
Do you need to do anything?
Optional. Older agents keep working, but they do not report the install check and the dry run is not available to them. To update, see Updating the Agent in the install guide, ideally when no send is in progress, because the update restarts the agent.
Dashboard
Unknown outcomes are shown as “Outcome unknown”, not Failed
What changed
When an email provider does not confirm whether a message went through, the recipient now reads Outcome unknown instead of Failed in the job report, the audit export (JSON and CSV, status Unknown), the job status response and the progress panel. The completion webhook gains two additive fields, unknown and report.unknown; event names are unchanged. This applies to agents 3.5.0 and later, which mark these cases; older agents do not write the marker.
Why it matters
The email may already have been sent, so calling it Failed could lead to the same message going out twice.
Do you need to do anything?
Nothing to do. If you have a script that filters audit rows on status Failed to decide what to re-send, it will no longer include these rows. Check with your email provider before re-sending them.
Dashboard
Rotate key button in Manage Agents
What changed
The owner of an agent can now get a new Agent Key at any time: Manage Agents → the agent → Install and credentials → Rotate key. The new key is shown once. Rotation is limited to once a minute and 5 times an hour per agent.
Why it matters
Replacing a key after the agent had connected previously needed a request to us.
Do you need to do anything?
Nothing to do unless you rotate. If you do, the old key stops working immediately, so update AGENT_KEY in your Function App’s environment variables with the new key; the agent reconnects after the Function App restarts. Steps are under Rotating Secrets in the install guide.
Enhancement
Welcome email sender address
What changed
The welcome email sent to new signups now comes from welcome@mail.ageebgeesolutions.com. Replies reach us directly.
Why it matters
Informational: if you filter or allow-list sender addresses, this is the address to expect.
Do you need to do anything?
Nothing to do.
Agent 3.5.0
Agent 3.5.0
What changed
The agent checks in with BulkForge at least every 2 minutes during a long send.
If it cannot fetch its settings, it keeps using the last settings it received instead of built-in defaults.
After a provider gives no confirmation (for example a server error), the agent no longer sends that job again on another channel; the recipients are recorded as Outcome unknown.
SendGrid batch sending: identical messages go in one request (by default up to 10 recipients), each recipient as its own email. The Batch sending switch under Manage Agents → Sending Limits turns it off. A recipient SendGrid later suppresses or bounces is not reported to BulkForge.
A Sending performance panel in Manage Agents (last hour and last 24 hours). It covers Azure Communication Services sends only.
Why it matters
A working agent no longer looks silent during large jobs, a short outage does not reset your routing settings, and a message that may already have been sent is not sent a second time on another channel.
Do you need to do anything?
Optional. Older agents keep working. To update, see Updating the Agent in the install guide, ideally when no send is in progress, because the update restarts the agent.
Enhancement
Completed-job payloads are cleared after 7 days
What changed
In Production, a daily sweep clears the stored payload (recipient addresses, template data, subject and message content) of completed jobs 7 days after the job last changed. Failed and abandoned jobs are cleared after 90 days, and per-recipient audit records are deleted after 90 days.
Why it matters
Less job content is stored for less time. Once a job’s payload is cleared, it can no longer be re-sent from the dashboard.
Do you need to do anything?
Nothing to do. If you need to re-send rejected recipients from a completed job, do it within 7 days. Details are under Data and Privacy in the install guide.
Agent 3.4.0
Agent 3.4.0
What changed
Azure Communication Services batch sending: identical messages go to Azure in one request (by default up to 10 recipients), and recipients are blind-copied so they cannot see each other. Messages that differ per recipient are still sent one at a time.
If Azure fails a request without saying whether it went through, the agent repeats it safely so no one is emailed twice. If Azure refuses a group, its recipients are sent one at a time so only a bad address fails.
Limit to know about: if a recipient is on Azure’s suppression list, Azure drops that address inside a group and still reports the request as accepted, so it does not show as failed. Batch sending is on by default for agents on 3.4.0 or later; to have every suppressed address reported individually, turn it off under Manage Agents → Sending Limits → Batch sending.
Why it matters
Azure counts its sending limits per request, not per recipient, so grouping recipients uses less of your hourly and per-minute request allowance.
Do you need to do anything?
Optional. Older agents keep working. To update, see Updating the Agent in the install guide.