TechnicalFor sellers, resellers and developers
automation

Client sites that build themselves.

Nobody on your team should be building websites by hand. An order, a form or a step in your CRM creates the client's site, and tells you when it's ready.

no setup

Your storefront already does it.

Every approved seller gets a storefront. Make a product for each kind of site you sell, and every paid order turns into a site with nobody pressing a button.

On your storefront

Order paid, site built

  1. Add a subscription product in your storefront, with its price.
  2. Turn on the website integration for it and pick the kind of site, the starting site and the size.
  3. That's it. A paid order builds the site and emails your client a link to sign in.

When a subscription is cancelled or runs out, the site is backed up and taken offline, then deleted after your grace period. If they pay again first, it comes back.

  • Your client pays

    On your shop, at your price.

  • The site is built

    From your starting site, in minutes.

  • They're emailed

    With a one-click way in.

an example

A web studio with dozens of clients.

The studio is a reseller with a few brands. Its owner never signs in to anything. One person on the team set this up once, in an afternoon, and now every new client gets a site without anyone touching WordPress.

  1. 1. A new client says yesthe trigger

    They fill in the studio's intake form, or the deal is marked won in the CRM. That's the only thing a person does.

  2. 2. The flow asks AnyPress for a siteseconds

    One step in n8n sends the client's business name and email, the studio's starting site and the size. The order number goes with it, so a retry can never make a second site.

  3. 3. AnyPress builds itminutes

    Its own WordPress and database, copied from the studio's starting site, with the client's login made for them.

  4. 4. Everyone hears about itwhen it's ready

    A signed message reaches the flow. It emails the client their address and login link, adds the site to the CRM and posts in the team chat.

  5. 5. The bill takes care of itselfon the 1st

    Every live site, across all the studio's brands, is on one wholesale bill. Nobody counts sites by hand.

Made-up studio, real steps. The person who set it up still sees every site, its backups and its jobs at app.anypress.io.

recipes

Copy these flows.

Each one is a trigger and one call to AnyPress. They use n8n, Make and Zapier, but any tool that can send a web request works the same way. Full step-by-step guides are in the docs.

n8n · a form

Intake form, new site

A client fills in your intake form, on your website or in n8n itself.

  1. Start the flow with an n8n Form Trigger, or a Webhook node your form posts to.
  2. Add an HTTP Request node: POST to https://api.anypress.io/v1/tenants.
  3. Authentication: Generic credential, Basic Auth. Your API key is the user and its secret the password.
  4. Send the JSON body shown here, filled from the form's answers.

Using Fluent Forms Pro on your own WordPress? Its Webhook feed can post each entry straight to the n8n Webhook node.

HTTP Request · JSON body
{
  "name": "{{ $json.business }}",
  "externalId": "form-{{ $execution.id }}",
  "wordPressUserName": "{{ $json.email }}",
  "wordPressUserEmail": "{{ $json.email }}",
  "wordPressUserRole": "administrator",
  "size": "small"
}

// The answer comes back at once, before the site is built:
// { "id": "…", "externalId": "form-…",
//   "baseDomain": "kettle-and-crumb.anypress.site" }
Zapier · a payment

Paid somewhere else, site built

The client pays through Stripe, an invoice tool or a booking app instead of your storefront.

  1. Trigger: the new payment, or the invoice marked paid, in your payment app.
  2. Action: Webhooks by Zapier, Custom Request. Method POST, address https://api.anypress.io/v1/tenants.
  3. Basic Auth: your key and secret with a bar between them, key|secret.
  4. Header Content-Type: application/json, and the body shown here, with the payment's id as the externalId.

Using the payment's own id means a Zap that runs twice still makes one site. Ids may only have letters, numbers and dashes, so swap any underscore for a dash.

Custom Request · Data
{
  "name": "Rose and Fern",
  "externalId": "pay-3QxK81Lm",
  "wordPressUserName": "owner",
  "wordPressUserEmail": "owner@roseandfern.example",
  "wordPressUserRole": "administrator",
  "size": "medium"
}
Make · a CRM step

Deal won, site built

Your CRM already knows when a client signs. Let that step make the site.

  1. In Make, start a scenario with a Custom webhook and copy its address.
  2. In your CRM, send to that address when the deal is won. In FluentCRM Pro, that's an automation with the Outgoing Webhook action, run when a tag like "Signed" is added.
  3. Add Make's HTTP module with Basic auth (your key and secret), POST to https://api.anypress.io/v1/tenants, with the contact's details as the body.
  4. Use the contact's id as the externalId, so one client is always one site.
the same call from a terminal
# Try it before you build the flow
curl -u "$KEY:$SECRET" \
  -H 'Content-Type: application/json' \
  -d '{"name":"Hill Street Dental",
       "externalId":"crm-contact-482",
       "wordPressUserName":"office",
       "wordPressUserEmail":"office@hillst.example",
       "wordPressUserRole":"administrator"}' \
  https://api.anypress.io/v1/tenants
any tool · cancellations

Client leaves, site goes offline

When billing happens outside your storefront, end the site from the same flow that ends the subscription.

  1. Trigger: the subscription is cancelled in your payment or CRM tool.
  2. POST to /v1/tenants/suspend?externalId=… with the same externalId you created it with. A backup is taken first.
  3. If they come back, POST to /v1/tenants/resume?externalId=… and it's online again, exactly as it was.
suspend, then resume
curl -u "$KEY:$SECRET" -X POST \
  "https://api.anypress.io/v1/tenants/suspend?externalId=pay-3QxK81Lm"

curl -u "$KEY:$SECRET" -X POST \
  "https://api.anypress.io/v1/tenants/resume?externalId=pay-3QxK81Lm"
when it's ready

Let the welcome email send itself.

A site takes a few minutes to build. Instead of checking, add a webhook and AnyPress calls your flow the moment it's ready.

n8n, Make or Zapier · tenant.ready

Site ready, client told

  1. Make a new flow that starts with a webhook (n8n Webhook node, Make Custom webhook, or Catch Hook in Zapier). Copy its address.
  2. At app.anypress.io, open Webhooks, add that address and tick tenant.ready. Keep the signing secret it shows you.
  3. In the flow, look the site up again with GET /v1/tenants?externalId=… and carry on only when statusCode is 1. That way the flow trusts AnyPress, not whatever reached the address.
  4. Email the client their address, domainName, and a link to https://<domainName>/wp-login.php?action=lostpassword to choose a password. Then update the CRM and tell the team.

Every request is signed the Standard Webhooks way, so a code step can check the webhook-signature header too. Each event can arrive more than once: use webhook-id to skip repeats.

what your webhook receives
{
  "type": "tenant.ready",
  "timestamp": "2026-10-24T16:05:12Z",
  "data": {
    "tenant": {
      "externalId": "crm-contact-482",
      "name": "Hill Street Dental",
      "domainName": "hill-street-dental.anypress.site",
      "statusCode": 1,
      "statusName": "Done",
      "size": "small"
    }
  }
}
EventWhen it's sent
tenant.readyA new site is built and answering. Send the welcome email.
tenant.failedA change still failed after its retries. We're told too.
tenant.domains_changedThe client's own domain is connected.
tenant.suspended / tenant.resumedTaken offline, or back online.
tenant.deleted / tenant.restoredGone, or back from its backup.
tenant.backup_completedA backup finished, nightly ones included.
keys

One key per storefront, or one for all of them.

Every call signs in with a key and its secret, the same way in every tool.

API keyPartner key
Who has itEvery seller and reseller storefrontResellers, for the whole account
Where you get itAPI keys, at app.anypress.ioFrom us, when you ask
Works onThat one storefront's sitesEvery storefront in the account
Each call saysNothing extraWhich storefront, with ?productId=
Can alsoManage sites, domains, webhooksAdd storefronts, share starting sites, read usage

Keys can be replaced with a grace period, so a flow keeps working while you paste in the new one. A wrong key or secret is answered with 403.

the fields

What a new site can be told.

nameThe site's name. Its free address is made from it, for example rose-and-fern.anypress.site.
externalIdYour own id for it: the order, deal or form entry number. Letters, numbers and dashes only. Sending the same create again answers with the site already made, so retries are safe.
wordPressUserName, wordPressUserEmailThe client's WordPress login. Send both or neither.
wordPressUserRoleTheir WordPress role, usually administrator.
groupNameWhich of your starting sites to copy, by its group name. Leave it out to use your current one.
sizesmall, medium or large. Small if you leave it out.
customDomainNameThe client's own domain, if they already have one. You can add it later instead.
productIdPartner keys only: which storefront the site belongs to. Sent in the address, not the body.

Every call, with examples, is in the API reference. The code behind it is open source.

Automation questions

Do I need a developer?
No. If your clients buy on your storefront, sites are already created for you. For anything else, n8n, Make and Zapier can make the one call it takes, and the recipes on this page show each step.
Where do I get an API key?
Sign in at app.anypress.io and open API keys. The secret is shown once, so put it straight into your tool's saved logins. Resellers can ask us for a partner key, which works on every storefront in the account.
What if the flow runs twice?
Always send your own externalId, like the order or deal number. A second create with the same externalId and name answers with the site already made, and never builds another.
How does the client get into their new site?
The create call makes their WordPress login with their email. Your welcome email links to the site's password page, so they choose their own password. Sites sold on your storefront get a one-click sign-in from their account instead.
Can it put the client's own words and logo in too?
Yes. Every site starts from your starting site, and an AI app connected to AnyPress can then change pages, sections, colours and menus for you. See the developer page.
Do my clients see AnyPress?
No. The flows are yours, the emails come from you, and sites sold from your shop show your brand.
ready?

Stop building sites by hand.

Apply to sell, and your storefront creates sites from the first order. Need a partner key or help with a flow? Email support@anypress.io.