White-Label Reselling
A white-label partner resells the product under its own brand. Its product name, colours, logo and favicon replace ours for its customers, optionally on a domain of its own. It pays a wholesale price for each customer it manages and bills those customers itself.
White-label reselling needs a partner tier on the wholesale model with white-label rights, such as the default White-label Partner tier. The portal’s Branding tab appears only when your terms include white-label branding, and its Domain tab only when they include a custom domain. Everything here is done by the partner organization’s Owners and Admins.
Branding
The Branding tab of the partner portal holds your brand. You can prepare it as soon as you are approved; customers see it once your partnership is Active.
- Product name - 2 to 40 characters: letters, digits, spaces and
. , & ' ( ) + - _ : !only. Required to go live. It appears in the toolbar, the browser tab, the sign-in page, and wherever the app names the product. - Primary colour - a hex colour in the form
#RRGGBB, such as#1A73E8. Required to go live. It drives buttons, tabs, progress bars and the rest of the colour palette, in the light and dark themes. You can type it or pick it from the swatch. - Accent colour - the same form, for links and highlights. Optional; without it the primary colour is used.
- Logo and Favicon - for the toolbar, the home and sign-in page, and the browser tab. See Logo and favicon.
- Support email - a plain address of up to 254 characters, such as
help@example.com, used for Contact support in the Help menu and on “Managed by” notices when no support page is set. It becomes an email link, so spaces, quotes and the characters? & # % /are refused: they would let an address add recipients, a subject or a body to the email. - Support page - where Contact support goes, in the Help menu and on “Managed by” notices.
- Help or documentation - where Documentation in the Help menu goes.
- Terms of service and Privacy policy - the Terms and Privacy items in the Help menu, and the matching links on the home page.
- Hide “Powered by AI Rule Engine” - offered only when your terms allow it. See What your customers see.
The four links must be absolute https:// addresses of up to 2,048 characters, with no user name in them.
Save branding applies your changes immediately; there is no separate draft, and Discard undoes unsaved edits. The line at the top of the tab says where you stand: Not live yet until a product name and a primary colour are saved, then Saved. Customers see it once your partnership is active. before you go live, and Live after. While your partnership is suspended, branding edits are paused and customers keep seeing your current brand. If the platform has taken your branding down, a notice takes the line’s place; see If your branding is taken down.
Logo and favicon
| Logo | Favicon | |
|---|---|---|
| Formats | PNG, JPEG or WebP | PNG |
| File size | Up to 256 KB | Up to 64 KB |
| Dimensions | 64 to 2,048 pixels wide and 32 to 1,024 high, at most eight times as wide as it is high or the other way round | Square, 32 to 512 pixels |
Upload adds an image, Replace swaps it, and Remove takes it away. A replaced image gets a new address, so browsers pick it up at once rather than showing a cached copy.
SVG files can carry script, so they are refused, as are GIF, ICO and every other format. The type is read from the file’s contents rather than its name, and a file whose contents do not match the type it was sent as is refused too. Export a PNG at the size you need.
Live preview
Beside the form, the Live preview shows a small mock of the app in your brand: the toolbar with your logo and product name, a card with primary, accent and outlined buttons and a progress bar, and a sign-in card that reads “Sign in to” your product name, with “Powered by AI Rule Engine” under it while that is shown. Light and Dark switch the preview’s theme. It follows the form as you type, before you save, and colours only the preview, never the rest of your screen. Until you choose a primary colour it shows the standard colours.
When your brand is live
Your brand is live while all of these hold:
- Your partnership is Active or Suspended. A suspension does not rebrand customers who did nothing wrong.
- Your terms include white-label branding.
- The platform has not taken your branding down.
- A product name and a primary colour are saved.
Who sees it:
- Your own staff, once they sign in and select your partner organization, so they work in your product too.
- Members of your managed customers, once they sign in and select the customer organization.
- Everyone on your active custom domain, from the first page, sign-in and the question before the hand-back included, while your partnership is Active. While it is suspended your domain cannot reach the platform at all, so it shows no brand to a first-time visitor and accepts no sign-ins; your customers keep your brand on the standard address.
- Anyone who follows your sign-up link on the standard address, from the moment they arrive until they sign in and select an organization.
Direct customers on the standard address never see it, and neither does a customer you release. Referral partners have no brand to show. Changes, including a partnership going live or ending, can take up to five minutes to reach every visitor.
What your customers see
- Toolbar - your logo and product name.
- Browser tab - your product name as the page title, and your favicon.
- Colours - a full palette computed from your primary and accent colours, in both the light and dark themes.
- Product name - on the home and sign-in page, and in the app’s own text wherever it names the product. The legal pages keep naming AI Rule Engine, because the platform terms still apply.
- Help menu - Contact support replaces Feedback, going to your support page, or to your support email when there is no page, and is hidden when you have set neither. Documentation goes to your help link; without one, it goes to this documentation site only while “Powered by” is shown, and is hidden otherwise. Terms and Privacy appear when you set those links.
- “Powered by AI Rule Engine” - a small link at the foot of the side navigation and under the sign-in card. It can be hidden only when your terms allow it (the default White-label Partner tier does) and you turn on the toggle.
If your branding is taken down
A super-admin can take a partner’s branding down, for example when a logo or product name copies another company’s. It is separate from a suspension, which leaves your brand in place. A takedown:
- Stops your brand showing anywhere at once: to your customers, behind your sign-up link, and on your custom domain, which also stops handing sign-ins over until the takedown is lifted. Your customers see the standard product meanwhile, and “Managed by” notices name you without your support email or page.
- Deletes your logo and favicon for good.
- Shows a notice with the reason on your Overview tab and at the top of the Branding tab.
While it stands you can still correct your product name, colours and links and save them, so the super-admin can review the fix, but you cannot upload a logo or favicon. When the takedown is lifted, your saved name, colours and links show again and you can upload new images.
Custom domains
With custom-domain rights, the Domain tab serves the product on a subdomain you own, such as app.yourcompany.com. Your customers sign in there and see only your brand. Each partner has one domain.
The hostname has to be a subdomain:
- At least three parts, such as
app.yourcompany.com. A bare domain such asyourcompany.comcannot point at the app. - Just the hostname: no
https://, path, port, wildcard, underscore or IP address, and no more than 253 characters. - Not one of our own domains, or a cloud hosting domain such as
azurewebsites.net. Use a subdomain of a domain your company owns.
Claim domain reserves the hostname. A hostname another partner has already claimed is refused, without saying who holds it.
A claim has seven days to verify, and the tab shows the deadline: “Verify by …, or the claim is released and anyone can claim this hostname.” A claim still waiting for DNS after its deadline is released by the next daily check, which runs once a day, so the hostname is free again. Until then it can still be verified. Claiming the hostname again starts a new claim, with a new TXT value to publish and a new seven days.
DNS records
Once claimed, the tab shows two records to publish with your DNS provider, each with copy buttons:
- TXT, named
_ruleengine-verification., with the value{domain} ruleengine-verification=followed by the code shown on screen. It proves you own the domain. - CNAME, named
{domain}, pointing at the target shown on screen, normallyapp.ruleengine.ai. It points the domain at the app.
Here {domain} is your full hostname, so for app.yourcompany.com the TXT record is named _ruleengine-verification..
Most DNS providers, such as Namecheap and GoDaddy, add your domain to the host name themselves. In a zone for yourcompany.com, enter only _ruleengine-verification.app as the TXT host and app as the CNAME host: entering the full record name publishes it at _ruleengine-verification., where verification will not find it. The tab works out these short host names for your domain. Paste the TXT value exactly as shown, including the ruleengine-verification= at its start.
The zone is the domain you registered, so under a two-part suffix such as co.uk or com.au it has three labels: for app.yourcompany.co.uk the zone is yourcompany.co.uk, and the hosts are still _ruleengine-verification.app and app.
Verification and activation
The domain moves through these statuses:
| Status | What it means |
|---|---|
| Waiting for DNS | Claimed; publish the records, then choose Check DNS records before the deadline the tab shows, seven days after the claim. |
| Verified | The TXT record proved you own the domain. We now connect it to our hosting and switch it on, or switch it back on for a domain that was live before. |
| Active | Live. Your customers sign in at https://{domain}/login, which the tab and your Overview show with a copy button. Pages on the domain can call the platform from the moment it is activated. |
| Lapsed | The TXT record went missing for three daily checks in a row. The domain shows no brand, accepts no sign-ins, and has a new TXT value for you to publish. |
Check DNS records looks the records up. Finding the TXT record is what verifies the domain. The CNAME result is shown beside it, such as “CNAME points at app.ruleengine.ai.”, but does not hold verification up, although the domain will not work for your customers until it is right. DNS changes can take a while to spread, so check again later if a record is not found yet. When the DNS lookup itself fails, the status is left as it was.
A verified domain goes live when we activate it, after binding it to our hosting. That step is manual and is shown on the tab as Activation by us. Nothing is emailed when it happens: the tab shows the domain as Active once it is live.
Every verified or active domain is checked again once a day. Three failed daily checks in a row make it Lapsed, which takes your brand and sign-ins off it and gives it a new TXT value. Your own clicks on Check DNS records never count toward that, and neither does a check that could not reach DNS at all.
To bring a lapsed domain back, replace the TXT value with the new one shown on the tab, then check again or let the next daily check find it. The old value no longer verifies. The domain returns to Verified, never straight to Active: we confirm with you that you still hold the domain and that its hosting is connected, then switch it back on. A domain whose registration expires can be registered by somebody else, who could publish the old record, which is why going live again always takes a person.
While a domain is not active, Use a different domain replaces the claim with a new hostname. An active domain has to be removed first. Remove deletes the claim; on an active domain your customers can no longer sign in there, and it stops showing your brand straight away. You can claim and remove a domain while your partnership is Approved or Active.
Environments hosted on our shared infrastructure work on your domain. A dedicated environment installed in a customer’s own Azure subscription always carries our brand and our Azure Marketplace listing, and opens only on the standard address. On your domain it is shown as opening on the standard address, and it cannot be opened there.
Activating a domain (super-admins)
A partner’s page under Admin -> Partners & Applications has a Custom domain card showing the hostname, its status, when a claim still waiting for DNS expires, when it was verified and activated, when it went off if it was live before, the last check and its result, the number of failed checks in a row, and the CNAME expected and seen.
- Activate appears for a verified domain while the partner’s terms include a custom domain. It asks you to confirm that the domain is bound to the app’s hosting and that its TXT and CNAME records are right; only then can you choose Activate domain. There is no allowed-origins step: both APIs accept requests from a partner’s domain while it is active and the partner is in good standing, and stop within two minutes of either changing.
- Activate again takes its place for a domain that was live before: one you deactivated, or one that lapsed and verified again. The dialog adds one more confirmation, that the partner still holds the domain, which you check with the partner outside the app. A domain verifying again is not proof of that on its own, because whoever registers a lapsed name next controls its DNS.
- Deactivate appears for an active domain. The domain stops serving the brand and accepting sign-ins straight away, stops reaching the APIs within two minutes, and returns to Verified. Unbind the hosting afterwards if it is going for good.
A lapsed domain is already off, so there is nothing to deactivate, and the APIs stopped accepting requests from it when it lapsed. Its hosting stays bound until you unbind it, which the Partner Domains list asks you to do. Once the partner publishes the new TXT value it returns to Verified and waits for you to activate it again. Only the partner removes a domain; an administrator deactivates it. A claim that has not verified within seven days is released by the daily check, with an entry on the partner organization’s audit log.
The Partner Domains list (super-admins)
Admin -> Partner Domains lists every change the Static Web App needs, because the app cannot see the Static Web App or change it. Each item shows the hostname, the partner (a link to its page, where Activate is), since when, and the exact Azure CLI command with a copy button. The Partner Domains card and the Admin entry in the navigation carry a badge with the number of items to act on.
- Add to the Static Web App lists every verified domain waiting for activation, for a partner that is Approved or Active with a custom domain in its terms. Run the command, then activate the domain on the partner’s page, and it leaves the list. A domain that is live in the app but whose hosting was removed (for example during a suspension the partner came back from) is listed as Live, but unbound: its customers reach nothing until it is bound again.
- Remove from the Static Web App lists every hostname that was ever active and is now off: removed by the partner, deactivated, lapsed, the partner closed, its branding taken down, or its terms no longer including it. Run the command, then choose Removed from swa-aire-prod-001 and confirm. Who confirmed it and when is recorded in the platform audit log. An item stays until somebody confirms it, so a hostname left on the hosting is never forgotten.
- Consider removing lists the domains of suspended partners and of partners whose brand is incomplete. These often come back, and a removed binding has to be added again then, so they are kept apart and not counted on the badge.
An item clears itself if its domain goes live again before anybody removes it, for instance when a suspended partner is reinstated. A removed domain is remembered even though its record is gone: the app notes the hosting to remove before it deletes the domain.
Signing in on a custom domain
Sign-in itself happens on the standard address. A customer who opens https://{domain}/login is taken to the standard sign-in page, shown in your brand with the message “Sign in to continue to” your product, and signs in with any of the usual options: Google, Microsoft, LinkedIn, or their organization’s single sign-on.
Before anything goes back to your domain, the standard address asks the person to confirm. The question names your company, as it appears on your partner record, along with your product, your domain and the account they are signed in as. It says that your company runs that site, and that continuing lets your company see and change everything they can in the organizations you serve. Someone who was already signed in on the standard address is asked the same question rather than sent straight back. Continue moves the session to your domain: it ends on the standard address, and the session on your domain ends when the original one would have. Cancel hands nothing over, and the person carries on, still signed in, on the standard address.
Only people you already serve can sign in on your domain: members of your partner organization, and members of the customers you manage. Someone you add to your partner organization counts only once they have opened it on the standard address at least once, so adding a person is not enough to bring them to your domain. Members of a customer that has blocked sign-in through your site are not handed over on the strength of that customer. Anyone else, and anyone at all while your partner account is suspended or your domain is not active, is told they could not be taken to your product and stays signed in on the standard address. Referred customers pay the platform directly and sign in on the standard address.
A session on your domain reaches only your partner organization and the customers you manage. A person’s other organizations are not listed there, and each organization is checked again whenever the session switches to it, so a customer you release stops working on your domain at its next switch. Platform administration, deleting or exporting an account, transferring an organization’s ownership and creating new organizations are done on the standard address. New customers sign up through your sign-up link, or you create them from the Customers tab.
Nothing set up from your domain may outlast the session that set it up, so anything that would is managed on the standard address instead. On your domain these screens show a notice pointing to the standard address in place of the controls:
- Credentials - organization API keys, an environment’s application API keys and AI provider keys, MCP credentials, approving an MCP client, and app authorizations.
- Who has access - adding or removing members and changing their roles, in the organization, its projects and its environments; custom roles; single sign-on, SCIM provisioning and verified domains; and the access policy.
- Where data goes - audit log streaming and retention, backups (the destination, running one, downloading one and restoring), the compliance archive destination, and member data exports.
Dedicated environments open only on the standard address. Authoring, running, testing and publishing rules, schedules, variables, and the rest of an organization’s settings work on your domain as usual. Everything a session on your domain does is recorded in the customer’s audit log as having come “via” your company at your domain, and a ruleset published there says so in its signed release evidence.
A managed customer’s owners and admins have the last word on their own organization. On its organization page they can block sign-in through your site, which stops the organization working on your domain at its next switch or refresh, and they can sign out every session on your domain that has worked in their organization. A customer who signs up through your link is asked at sign-up; one you create, or one a super-admin attaches, starts with sign-in through your site allowed.
The hand-back uses a one-time code that works once, for two minutes, and only in the browser tab that started the sign-in. A sign-in link naming a domain that is not an active partner domain shows “This sign-in link is not valid”, and the person can still sign in normally. Session limits from an access policy are measured from the original sign-in, so the hand-back never extends a session.
Managed customers
An organization becomes one of your managed customers when:
- You create it. On the Customers tab, Create customer asks for the Organization name (up to 100 characters) and the Owner’s email address. That person becomes the owner, with an account created for them if they have none yet. The address must not belong to anyone who has already signed in, unless it is your own: only that person can agree to an organization you manage, so for them the form offers your sign-up link to send instead, and they create the organization themselves. Add me as an admin of the new organization and Include a starter project are both on by default.
- Someone signs up through you. An organization created after following your sign-up link becomes yours, once its creator agrees on a confirmation step that names your company and says what you can see and do. The form they create it on shows none of our plans or prices: it says your company sets up the plan and pays for it. See Referral links and attribution.
- A super-admin attaches it.
Every new managed customer starts on the Free plan. If your terms limit how many customers you manage, creating one and taking one on through your link both stop at the limit.
What a managed customer’s members see:
- Your brand, once it is live.
- On the organization page, their plan and usage without a price, and a Managed by notice with your display name in place of the plan choices: “The plan and billing for this organization are handled by” you, “To change the plan, contact them.” Its Contact support button goes to your support page or email.
- On the credits view, their balance and history, with the same notice in place of buying credits, saving a card and auto-recharge. Credits you send show as Transfer from partner.
- The same notice in place of the paid add-ons, such as Compliance Archive.
- No way to delete the organization while you manage it. Deleting stops only an organization’s own subscription, and its plan is on your card, so you would go on paying for it; the refusal names you and asks them to have you release it first.
- For owners and admins, a setting for sign-in through your site, with a button to sign out every session there that has worked in their organization. See Signing in on a custom domain.
A managed customer cannot buy anything from us directly. Its plan and its credits come through you, and any attempt to buy either is refused with a message naming you and how to reach you. There are no extra author seats or paid add-ons for a managed customer: it has the author seats its plan includes, 25 on Enterprise, and none of the add-ons. When a super-admin attaches an organization that had its own seat limit or add-ons, its seat limit goes back to what its plan includes and its add-ons are switched off.
Plans and billing
On the Customers tab, a managed customer’s menu has Change plan. Choose Monthly or Annual and a plan. Each plan shows your price with the list price struck through. Only the plans your terms allow can be chosen, and a plan without a price for that interval shows as not offered.
The default White-label Partner tier lets you sell Free, Pro and Team. A super-admin can add Enterprise to a tier or to your own terms. A managed Enterprise customer has the included 25 author seats, with no extra seats and no add-ons, and its dedicated installs are never white-labelled: they carry our brand and our Azure Marketplace listing and open only on the standard address.
| Change | What happens |
|---|---|
| Free to a paid plan | Your card on file is charged now at your wholesale price, and the customer moves to the new plan at once. If the payment does not complete, nothing changes. |
| One paid plan to another | Prorated at your wholesale price, on your next invoice. On an annual subscription an upgrade is invoiced right away instead, and so is a switch between monthly and annual billing, which starts a new billing period. See Mid-cycle subscription changes. |
| A paid plan to Free | The subscription is canceled now, with a prorated credit to you, and the customer drops to Free immediately. |
Each paying customer has its own Stripe subscription, on your partner organization’s card, at list price less your wholesale discount, and each invoice names the plan and the customer. You need a card on file first: add one on the Billing tab. If a terms change has lowered your customer limit below the number you manage, existing customers keep their plans, but no more can move onto a paid plan until you are back within it.
The Billing tab brings your side of it together:
- Platform fee and Fee status - your monthly fee, which is a separate subscription on the same card. See Approval and activation.
- Estimated monthly - the fee plus your managed customers at your prices.
- Payment method - Add a card or Replace card. Saving a card charges nothing.
- Your prices - what each plan costs you, monthly and annual, read from the prices actually charged.
- Invoices - your organization’s recent invoices, fee and customers alike, each with a View link.
You set your own prices and bill your customers yourself; the product never shows your customers what you charge them. If a customer’s payment fails, its row shows Payment past due and Stripe retries the card. If it stays unpaid, the plan ends and the customer drops to Free, exactly as a direct customer would. A change to your wholesale discount by a super-admin applies to each customer subscription from its next invoice. Your own organization buys its own plan and credits the normal way.
Credit transfers
Managed customers get credits from you rather than buying them. Transfer credits in a customer’s menu moves 1 to 10,000 credits per transfer from your partner organization’s balance to the customer’s, and confirms both balances afterwards. A transfer larger than your balance is refused, so buy credits for your own organization first. If the credits cannot be added to the customer, they go back to your balance. If a transfer fails part-way or the page loses its answer, press Transfer again in the same dialog: it finishes that transfer and never sends the credits twice. A new transfer starts from a new dialog. Your history shows Transfer to customer and theirs Transfer from partner. Credits pay for runs beyond the plan’s monthly allowance.
Releasing a customer
Release customer in a customer’s menu ends your management of it. You stop paying for it and it drops to the Free plan immediately; any paid subscription is canceled now, with a prorated credit to you. It becomes a direct customer: it sees the standard product rather than your brand, can buy its own plan and credits, and you can no longer manage it. A release cannot be undone from the portal. Staff you added as admins stay admins until the customer’s owner removes them, and the customer stays in your list, marked Released.
You can release customers only while your partnership is Active. A suspended partner’s customers are released by a super-admin, which is also required before a partnership can be closed.
What stays unbranded
A few things keep naming AI Rule Engine, or show the standard address, whatever your brand:
- The Google, Microsoft and LinkedIn consent screens, which name our app.
- The standard address in the address bar while a custom-domain sign-in runs.
- Links the platform creates for a running environment, such as human intervention reviews, MCP consent and app authorizations. They open on the standard address and show your brand only after sign-in, once the organization is selected.
- The name the MCP server gives MCP clients.
- This documentation site and marketplace content.
- Stripe receipts and invoices. For your managed customers these come to you, because you are the one paying.
- Dedicated environments, installed from our Azure Marketplace listing into a customer’s own subscription. They open only on the standard address.
- The legal pages in the app, because the platform terms still apply.
Embedding the product inside another site or app is not supported.