Operational products 路 In Production 路 Phase 1
Simple Marketing

Simple Marketing
Marketing automation built for the Microsoft 365 partner channel.

For CMOs and marketing ops at Microsoft Solutions Partners, agencies, and mid-market B2B firms.

HubSpot and Marketo were built before AI agents, and before Microsoft 365 became the place work actually happens. Simple Marketing runs audiences, campaigns, content, and attribution on multi-tenant Azure, with delivery through SendGrid or the customer's own Microsoft 365 tenant, and a consent ledger that treats permission as a record rather than a checkbox. A partner ships campaigns under their own brand, on their own sending domain, on infrastructure they can hand to an auditor.

Replaces HubSpot Marketing Hub Marketo Engage Mailchimp Customer.io
Web Available Copilot Planned

How to get Simple Marketing

Available on request

Running in production and taking new customers. There is no self-serve trial or purchase on this one yet, so access is set up with us directly.

Where this stands

Availability
Available on request

What it costs

No published price yet. Pricing is set before this product opens.

Routes that are not open

  • Direct trial with Simple Intelligence Not open yet
  • Direct subscription from Simple Intelligence Not open yet
  • Microsoft Marketplace Not published yet
  • Sponsored subscription for member companies Not open yet
Full terms for every route

The platform you rent is also the brand your client sees.

An agency running campaigns for a dozen clients inside one marketing platform is renting a name that is not theirs, on a sending domain that is not their client's, with a list that lives somewhere they cannot point an auditor at. When the client asks who has permission to email these people and when they gave it, the honest answer is that the platform knows, and you can export a report about it.

Own the tenant, the domain, and the ledger.

Simple Marketing gives each tenant its own isolated data, its own sending domain with DKIM and SPF verified before anything goes out, its own brand on the emails and the links, and a consent ledger that records the event rather than a current-state flag. Permission stops being a column somebody can overwrite and becomes a history you can read back.

The agent drafts the campaign. It does not send it.

Content variants are generated with the model recorded on the row, and a campaign goes out after somebody requests approval and somebody else decides on it, with both people and the timestamp kept. Nothing in this product treats an unattended job as sufficient authority to email a person for the first time.

What works today, and what does not.

Simple Marketing runs in production on Azure with authenticated multi-tenant access, and access is arranged with us rather than self-served, because nothing a stranger can click creates a tenant. The unfinished parts are on the connector edges and in one consent-enforcement flag that is still rolling out.

Working today

  • Audiences, subscribers, programs, campaigns, and multi-step campaign flows, with A/B splits and automatic promotion of a winning variant
  • A block-based email composer that renders to MJML, with merge fields, templates, and reusable content assets
  • Delivery through SendGrid, or through the customer's own Microsoft 365 tenant where send-as is granted, with per-tenant serialisation so one tenant cannot starve another
  • Sender domain authentication surfaced in the product: DKIM and SPF status read from SendGrid, so an operator sees verified or not verified without leaving the application
  • Signature-verified SendGrid event webhooks materialising delivery, open, click, bounce, unsubscribe, and spam-complaint events against the send row
  • A consent ledger that records events rather than a flag, with double opt-in forms, per-purpose subscription types, a policy revision history, and an erasure path
  • Attribution across five models: first touch, last touch, linear, time decay with a seven-day half-life, and a position-based split, normalised so credit sums to one
  • Social publishing to LinkedIn, X, Meta, Instagram, and Threads, and ad spend aggregation from Google, Meta, and X
  • White-label per tenant: custom domain, custom sender address, branding, and short links presented on the tenant's own domain
  • An MCP server with ten tools that writes an audit row for each invocation, whether it succeeded or failed

Not yet

  • Per-purpose consent enforcement is behind a three-state flag that defaults to off, with observe and enforce as the other two settings. The dispatch loop still applies global suppression and destination checks in every mode, but the finer-grained "is this person subscribed to this specific purpose on this specific channel" decision is only blocking when a deployment has turned it on. Ask which mode your workspace runs in rather than assuming the strictest.
  • Self-serve signup is not open. Access is arranged with us, a tenant is provisioned deliberately, and sending is not switched on at the same moment the account is.
  • Each social and advertising connector needs its own vendor application and your consent before it does anything. An unconfigured connector reports itself as unconfigured rather than failing quietly.
  • The generating prompt is not stored on generated content. The model is recorded and the approval decision is recorded, so the honest description is a model attribution plus an approval trail, not a full reproduction of how a draft was produced.
  • The Azure Marketplace and AppSource listings are planned, not published. There is no transactable listing, so this cannot be bought through a Microsoft agreement yet.
  • A Copilot surface is planned. Today this is a web application, with a Teams package in the repository that is not the primary way anyone uses it.
  • There is no published deliverability guarantee. Domain reputation depends on the list you bring and how you treat it, and no vendor that tells you otherwise is being straight with you.

Verified against the product on 2026-08-20.

The teams this was built for.

Running campaigns for clients under their brand, not ours

Agency or Microsoft partner

Each client is a tenant with its own sending domain, its own branding, and its own short-link domain, so a recipient never sees the platform's name. The consent ledger for that client stays inside that client's tenant, which is the answer to the question their compliance team eventually asks.

Proving that permission existed

Marketing operations

Double opt-in forms write a consent event at request and another at confirmation, policy revisions are kept, and an erasure request has a defined path. When somebody asks when a subscriber agreed and to what, the answer is a record with a timestamp rather than a current-state flag that has been overwritten twice since.

Sending from the company's own Microsoft 365 tenant

IT or security lead

Where send-as is granted in the customer's directory, campaign mail goes out through Microsoft Graph from the customer's own tenant rather than a third-party sender, which changes the conversation about what a marketing tool is allowed to do with the corporate domain.

Reporting which campaign actually earned the deal

CMO

Touches that were opened or clicked are credited across five attribution models, normalised so the numbers reconcile. Picking a different model changes the split, not the total, which is the part that usually gets argued about at the end of a quarter.

From an empty tenant to a campaign that sent.

1

A tenant is provisioned deliberately

Access is arranged rather than self-served. The tenant is created, sign-in is through Entra ID, and the workspace exists before anyone thinks about a list. Provisioning an account and enabling sending are two different decisions on purpose.

2

Authenticate the sending domain first

The domain on the right of the From address needs DKIM and SPF records validated before campaign mail goes anywhere. The product reads that status back from SendGrid and shows it as verified, pending, or needing setup, so nobody discovers the problem from a bounce report.

3

Build the audience with the permission attached

Subscribers arrive through forms, import, or the API, and each of those writes a consent event. A form marked double opt-in creates the subscriber as pending and only makes them active after the confirmation link is followed.

4

Draft, then get a decision

Content variants are generated with the model recorded, edited in a block composer, and assembled into a campaign or a multi-step program. An approval is requested and decided by a named person, and that decision is kept with a timestamp.

5

Send, measure, and attribute

The dispatcher claims queued rows under a per-tenant lock, checks plan limits before it sends rather than after, and pushes through SendGrid or Microsoft Graph. Signature-verified events come back as deliveries, opens, clicks, bounces, and complaints, and feed the attribution models.

What it does between the idea and the report.

A consent ledger, not a subscribed checkbox

Consent is stored as events with a policy revision attached, alongside per-purpose subscription types so that "yes to the newsletter" is not silently read as "yes to everything". A subscriber removed under an erasure request is severed and retained in the ledger rather than deleted out of the history, because a record that vanishes cannot prove anything.

A dispatcher that respects the plan and the tenant next door

Sending is serialised per tenant with a database advisory lock, so a second run for the same tenant returns rather than doubling up, while other tenants keep going in parallel. Eligible rows are claimed in one statement so two runners cannot both read the same remaining allowance and overshoot the monthly cap. Provider errors are classified, and a quota exhaustion halts the run and raises an alert instead of hammering the API.

Two ways out, one of them yours

SendGrid is the default path, with signature-verified event webhooks feeding delivery data back. Where a customer has granted send-as in their own Microsoft 365 directory, campaign mail goes out through Microsoft Graph from their tenant instead, which is a materially different answer for an organisation that does not want its domain sending through a third party.

White-label that reaches the link, not just the logo

A tenant can carry its own domain, its own From address, its own branding, and short links presented on its own domain, so a recipient of an agency's client campaign never sees the platform. Custom domain routing is resolved in middleware rather than bolted on per feature.

Answer-engine visibility as a first-class report

Alongside conventional attribution, the product runs configured prompts against AI answer providers and records what came back, so a marketing team can see how their category is being described by the systems buyers increasingly ask first. It is a measurement surface, not a promise of ranking.

Where the list lives, and who can send to it.

Postgres with vectors, tenant scoped in the query layer

Audience history, consent events, campaign records, and content provenance are durable business records, so this is a persistent store rather than an ephemeral one, with vector search alongside for content and audience work. Every domain table carries a tenant id and the filter is composed into queries rather than left to each route.

The list is the sensitive asset, and it is treated that way

Tenant isolation is the boundary that matters most here, because the thing being isolated is other people's contact data and the permission trail behind it. Consent records are kept even when a subscriber is erased from the sendable population, because an erased record that leaves no trace cannot answer a regulator.

Sending authority is separate from account existence

Having a tenant does not mean being able to send. The sending domain has to authenticate, the plan limit is checked inside the dispatch lock, and a campaign needs an approval decision. Those are three separate gates rather than one switch.

Runs on Azure, in the SIG subscription

Azure Container Apps behind Front Door, secrets in Key Vault reached through a managed identity, blob storage for assets. No AWS, no Google Cloud, no third-party platform-as-a-service in the delivery path beyond the mail provider itself.

What it connects to, and what needs your own credentials.

A name here is a system this product is built to work with, not a promise that the connection is live in your tenant. Where a connector carries a status label, that label is the current state. Anything that needs its own vendor registration, its own consent, or its own approval says so, and nothing on this page can be taken as available until it is confirmed for your tenant.

Microsoft

Entra ID multi-tenant sign-in Microsoft Graph send-as from the customer tenant SharePoint document surface Planned or partial Simple Marketing reads a nominated SharePoint document library as a watched folder, and that read is built. It is read-only by design, it needs its own Entra app registration with site-scoped consent and an allowlist of the drives it may touch, and no customer tenant has been taken through it yet. Treat it as built and not yet proven for you. A Teams package in the repository

Delivery

SendGrid with signature-verified event webhooks SendGrid domain authentication status read into the product Azure Communication Services for SMS

Social and advertising (each needs its own vendor application and your consent)

LinkedIn X Meta and Instagram Threads Google Ads Meta Ads

Across the portfolio

Qualified leads handed to Simple Growth Shared Microsoft engagement catalog with Simple Growth

For your own systems

MCP server with ten tools Public form endpoints Attribution export

Reading data from an external system is not a way to sign in. Customer identity stays with Microsoft Entra ID, and no data source on this list authenticates a person.

Where each of these claims comes from.

Sender domain authentication status is read from the provider, not asserted.
In the build The sender-domain check calls SendGrid's whitelabel domains API and returns DKIM and SPF validity per record, which the admin surface renders as verified, pending, or needing setup. Checked 2026-08-25
Delivery events are rejected unless the signature verifies.
In the build The delivery-event endpoint verifies the ECDSA signature against the configured public key before it materialises any event, and rejects a payload that fails. Checked 2026-08-25
One tenant cannot overshoot its plan or starve another.
In the build Dispatch serialises per tenant with a Postgres advisory transaction lock, claims eligible rows in a single statement to close the count-then-claim race, and runs the provider calls outside the transaction. Checked 2026-08-25
Consent is a ledger of events with policy revisions attached.
In the build The schema defines consent events, consent policies, policy revisions, and consent challenges alongside per-purpose subscription rows, and records that an erased subscriber is severed from their identity and retained rather than removed from the ledger. Checked 2026-08-25
Double opt-in creates a pending subscriber until the link is followed.
In the build The double opt-in flow logs the request and creates the subscriber as pending when the public form is submitted, and it is confirmation through the emailed link that flips them to active. Checked 2026-08-25
AI provenance is a model attribution plus an approval trail.
In the build The schema records the model name, the AI-generated flag, the confidence, and the reasoning on each content variant, and the approval record carries the requester, the decider, and the decision time. No column stores the generating prompt, which is why this page does not claim one. Checked 2026-08-25
Attribution credit is normalised across five models.
In the build Attribution implements first touch, last touch, linear, time decay at a seven-day half-life, and a position-based split, and normalises credit per subscriber and conversion so it sums to one under any model. Checked 2026-08-25
Agent tool calls are recorded whether they succeed or fail.
In the build An audit row is written per agent-interface invocation carrying the tool, the input, the output or error, and the latency, and the build declares ten tools. This is a record of calls through that interface, not a claim that every write in the product is logged. Checked 2026-08-25

How access works right now.

How access starts
A conversation first. We scope the evaluation with you and provision the tenant ourselves.
Evaluation length
Agreed when the evaluation is scoped, up to 45 days for a standard evaluation. A longer guided pilot is approved case by case.
Payment details
None collected to begin an evaluation.
Storage posture
Persistent (Postgres + pgvector)
Certification target
M365 Cert Tier 2
Distribution
Direct (simpleintelligencegroup.com) 路 Azure Marketplace (planned) 路 AppSource (planned)
Status
In Production 路 Phase 1

How ICM informs Simple Marketing

Simple Marketing drafts campaigns and the assets around them. Everything it makes starts as a draft, and a workspace decides whether a campaign additionally needs named reviewers before it can go out.

Built, and verified against the product code

  1. Context in

    A brief, an audience, and the brand voice

    Generation reads the workspace's brand voice record and the brief for the piece being written, rather than the whole content library.

    Gated

  2. Retained or discarded

    Everything lands as a draft

    Campaigns, content, forms and landing pages are all created in draft state by default. There is no generation path that produces something already live.

    Gated

  3. What the agent proposes

    Variants to choose between

    The generator produces alternatives against the brief and the voice record, with model tiering chosen per task. Picking one is a person's job.

    Gated

  4. Human review a person decides

    Reviewers, where the workspace requires them

    Review before send is a workspace setting and it is off unless somebody turns it on. When it is on, a campaign cannot launch without an approval carrying as many distinct reviewers as the workspace configured.

    Gated

  5. Permitted effect

    Launch is the effect that is gated

    Approval authorises the campaign that was reviewed. It does not authorise the next edit of it: a changes-requested decision stops earlier approvals counting and the cycle starts again.

    Gated

  6. Evidence recorded

    Tool calls record whether a person approved

    Audit rows for the agentic core carry the approval flag alongside the call, so an approved action and an unapproved one are distinguishable after the fact rather than by inference.

    Gated

  7. Failure and refusal

    What the gate does not cover, it does not claim

    The review gate applies to campaign launch. Approval surfaces for bundled content are specified and not yet built, and those objects are outside the gate until they are. Where review is switched off, a draft is exactly as good as the person who publishes it.

    Gated

These labels describe each step of this workflow on its own. They are not the availability of the product, which is the status shown at the top of this page.

This describes how the workflow is built. It is not a statement about availability, which is the status shown at the top of this page. ICM informs how context, review and evidence are designed here. It does not replace this product's database, its tenant isolation, its Entra identity, its audit tables, or its authorisation checks.

Methodology note

ICM was developed by Jake Van Clief and David McDermott. Simple Intelligence Group did not originate the methodology.

Simple Intelligence Group applies relevant ICM principles to context, provenance, traceability, human review, and workflow design.

Participation does not imply certification, endorsement, partnership, or an official ICM Architect designation.

What marketing leaders ask first.

Can we send from our own domain, or do you send on our behalf?

Both are supported and they are genuinely different. The default is SendGrid with your sending domain authenticated, which means DKIM and SPF validated before anything goes out. Where your administrator grants send-as in your own Microsoft 365 directory, campaign mail goes out through Microsoft Graph from your tenant instead, and no third-party sender is in the path.

What stops somebody uploading a bought list and sending to it?

The product will not stop you from making a bad decision with a list you own, and no vendor honestly can. What it does is make the decision visible: consent is recorded as events, forms can require double opt-in, sending authority is separate from having an account, and campaigns go through an approval with a named decider. Access is arranged with us rather than self-served, so a stranger cannot register at midnight and start sending.

Is per-purpose consent actually enforced?

That depends on the deployment, and it is worth asking rather than assuming. Global suppression and destination checks apply in every mode. The finer decision, whether this person is subscribed to this specific purpose on this specific channel, sits behind a three-state flag: off, observe, or enforce. It is off by default, so ask which mode your workspace runs in and have the answer in writing.

How is this different from HubSpot for an agency?

The tenant boundary and the brand. Each client is an isolated tenant with its own sending domain, its own From address, its own branding, and short links on its own domain, so a recipient never sees the platform name. The consent ledger for that client lives in that client's tenant rather than in a shared account you administer.

What does the AI actually write, and can we see why?

It drafts content variants across email and social, with the model recorded on the row and a confidence and reasoning field available. What it does not do is store the prompt that produced the draft, so treat this as model attribution plus an approval trail rather than a full reconstruction. A person requests approval and a person decides, and both are kept.

Can we buy it through our Microsoft agreement?

Not yet. Azure Marketplace and AppSource are planned rather than published, so there is no transactable listing and no consumption commitment eligibility to claim. Access today is arranged directly.

What happens to the list if we leave?

It is yours, including the consent history, and the erasure path exists for the subscribers who ask for it. Raise a specific export shape before you start rather than at the end, so it is agreed while it is cheap to agree.

Ten questions to ask before you let a platform email your list.

A short operations checklist for marketing and compliance leads. It runs in the page, stores nothing, and prints if you want to take it into a meeting.

Before you let a platform email your list.

None of these need a product to answer, and most marketing teams find two or three uncomfortable. If your current platform cannot answer them, that is worth knowing whoever you buy from.

Nothing here is stored or sent. Tick boxes to work through it, or print the page and take it into the meeting.

What it connects to across the portfolio.

Simple Marketing is the demand layer of SimpleOS. A campaign here produces a qualified lead in Simple Growth, that deal becomes a plan in Simple Projects, and the hours worked against the plan return through Simple Time.

How to start

  • Available on request Open

    Running in production and taking new customers. There is no self-serve trial or purchase on this one yet, so access is set up with us directly.

    Request access
  • Direct trial with Simple Intelligence Not open yet

    This product has no self-serve trial yet. Ask us and a person will set access up.

  • Direct subscription from Simple Intelligence Not open yet

    There is no direct checkout for this product yet. Where a trial exists it converts to a paid subscription inside the product.

  • Microsoft Marketplace Not published yet

    There is no transactable listing for this product yet, so it cannot be bought against a Microsoft agreement today.

  • Sponsored subscription for member companies Not open yet

    The member sponsorship program is not open for this product yet.

Questions about evaluation length, extensions, or sponsored access are answered on the get started page.

Talk to us before you move a list.

Access is arranged rather than self-served, and moving an audience is a conversation about permission and domain reputation before it is a conversation about software. Bring the awkward questions from the checklist above.

Availability Request access