Skip to main content
A hub’s Settings page is where you change how the hub looks, who can join it, what address it uses, what members must accept, and who its emails come from. To open it, select Manage on a hub’s card on the Hubs page, then Settings in the hub sidebar. If you have not created a hub yet, start with Getting started in the admin.
This Settings page is not live in production yet. Until it is turned on, your hub’s Settings page shows a single General settings form instead of the sections below. Create a hub describes that form.

The Settings page

The page is titled Settings. It is one scrolling page of seven sections, each with its own heading and one-line description, and no separate pages to open. Under the title, a line says “Only what the API holds today. Most of it saves in one call; Domain and Email have their own verify and test steps.” A link such as /hubs/{hub}/settings/basics opens the page scrolled to that section. The older addresses /settings/email, /settings/privacy, and /settings/redirects still work and scroll to Email, Sign-up, and Tracking & footer. Most sections have Save and Discard buttons that appear once you change something. A confirmation, such as Settings saved., appears after a save. Some switches, such as Social sign-in, Enforce policies, and Mio watermark, save as soon as you flip them. The Registration switch under Sign-up is different: it needs Save.

Basics

Changing the slug changes the hub’s address, so links that use the old slug stop working. If another hub already uses the slug, the field shows That slug is already taken. The admin does not add a suffix for you here, unlike when you create a hub.

Sign-up

Registration controls whether anyone with the link can join the hub for free. Turn it off to make joining invite-only. While the hub is private, the switch has no effect until you make the hub public (see Visibility under Basics). Social sign-in (“Let members sign in with an account they already have.”) lists the sign-in providers set up for this hub, such as Google, each with a switch and a line that says “Members can sign in with it.” or “Turned off.” Turning a switch on lets members sign in with that account; turning it off hides it. A switch saves as soon as you flip it, and the admin confirms with a message such as Google turned on. If the hub has no providers, the section says No social sign-in providers are set up for this hub. The admin cannot add providers yet. To register one, see Register external sign-in providers. For how members register and sign in, see Member authentication.

Domain

Every hub has a default address, {slug}.membership.io, which always works. The Domain section adds one custom domain of your own, such as www.yourdomain.com. A hub can have one live custom domain at a time.
  1. Select Add custom domain, type the hostname, and select Connect. The admin confirms with “Custom domain added”.
  2. The domain shows a Not verified badge, and the CNAME and TXT records to create appear below it, each with a copy button. Add them where you bought the domain.
  3. Select Verify. The Verify dialog repeats the records and says changes can take a few minutes to show up. When the records are found, the badge becomes Connected and the admin says “Domain verified”.
A domain can also show Disabled, Failed (with the reason under it), or Removing. Select Remove to disconnect it. The dialog explains that members can still use the default address, and that you must delete the CNAME and TXT records at your DNS provider yourself. Failed attempts from the last 30 days are listed below, each with its own Remove. The admin explains the common refusals: “That domain is already connected to another hub.”, “This hub already has a custom domain.”, and “Your team has too many domains waiting for verification. Verify or remove one first.” Only the team or hub owner can manage custom domains, and where the feature is not switched on the section says “Custom domains are not available yet.”

Email

The Email section has four parts. Email (“Who your hub’s emails come from and where replies go.”) sets the sender identity: Sending (“Your mail server”) sends this hub’s email through your own SMTP server instead of Membership.io. Sequences only run on Membership.io’s sending, so they pause while this is on. A Status row shows Not set up until you save a server. Fill in Server address, Port, Encryption (STARTTLS, SSL/TLS, or None), Username, and Password, then the Sender group: From name, From address, and an optional Reply-to address. The password is stored encrypted and never shown again; leave the field empty to keep the saved one. Select Test and turn on. The admin sends a test email to your own address first and saves the server only if it goes through (“Mail server saved”). Once it is on, Send test sends another, and Turn off goes back to Membership.io’s sending. Deliverability shows the hub’s sending Status (Sending normally, Warned, Slowed down, Suspended, or Not sending yet) and, for the last 24 hours, Sent, Delivered, Bounced (with hard and soft counts), Spam reports, Unsubscribes, Hard bounce rate, and Spam report rate. Blocked addresses lists the addresses your hub never emails: unsubscribes, spam reports, and addresses you block. Block address asks for an Email address and the admin confirms with “Address blocked”. Each row says why the address is blocked. A block you added (Blocked by you) can be lifted with Remove block. The others (unsubscribes, spam reports, bounces, or a block by Membership.io) cannot be removed here, and the row says what to do. With none, the list says No blocked addresses. Sending and Blocked addresses are for the team owner. Anyone else sees “Only the team owner can manage …” and “Ask the owner of this team if something here needs to change.”

Policies

Enforce policies decides whether members see the Terms of Service and Privacy Policy and must accept them to join. It saves as soon as you flip it.
  • On a private hub, switching it on makes members accept the policies.
  • On a public hub, the Terms and Privacy Policy always show. The switch takes effect if you later make the hub private.
Below the switch, Terms of Service and Privacy Policy each have a text box:
  • Write the text in Markdown. Raw HTML is not allowed.
  • The text cannot be empty and can be at most 64 KB.
  • Select Save to publish it. The saved text is the version members see.
  • The box’s options menu has Preview, which opens the public page in a new tab, and Reset to default, which asks you to confirm and then replaces your text with the standard one.
The Terms form also has Ask members to accept the Terms again. It applies to that one edit only: members are asked to accept the new version. Because it rides on an edit, you must change the Terms text before saving with it on. Otherwise the admin shows Edit the Terms before asking members to accept them again. The switch turns off again after each save. The Privacy Policy has no such switch. This section holds Magic-link redirect origins, the Mio watermark, and Custom CSS.

Redirect origins

When a member signs in with a magic link, the hub can send them back to a site you list here, such as your own website. This list is the allowlist: a redirect to any other site is rejected. A new hub has none, so the section says “No redirect origins yet. Magic-link redirects are rejected until you add one.” An origin is the scheme, host, and optional port of a site, like https://yourwebsite.com. To add one, type it into Add an origin and select Add origin. To remove one, select the remove button on its row. Each add or remove saves right away. The rules for an origin:
  • It must start with https://. Plain http:// is allowed only for localhost, 127.0.0.1, and [::1].
  • Give only the origin: no path, query, or fragment. A single trailing / is fine.
  • No username or password, so nothing before an @.
  • No wildcards, and no spaces or control characters.
  • A port is kept as you type it, including :80 and :443. It must be a number from 0 to 65535.
  • The host must be a plain ASCII domain name. For a Unicode domain, enter its punycode form, like https://xn--bcher-kva.example.
  • At most 512 characters.
  • An origin already in the list is not added twice.
The list holds at most 50 origins. At the limit the form is replaced by You’ve reached the limit of 50 origins. Remove one to add another. If an origin breaks a rule, the admin shows the reason under the field.

Watermark and custom CSS

Mio watermark (“Shows a small Made with Mio badge in the footer of every hub page.”) is a switch that saves as soon as you flip it. Custom CSS is loaded on every hub page after your theme, for small tweaks the editor cannot make. Select Save to apply it.

Delete hub

Delete hub removes the hub: members lose access and the files stay in the Library. It works as described in Delete a hub.

Google Tag Manager through the API

The admin has no Google Tag Manager field yet, but a hub already stores its GTM container ID at settings.tracking.gtm_container_id, and you can set it with the Admin API. The accepted value is GTM- followed by 1–20 uppercase ASCII letters or digits, for example GTM-1A2BCDEFG. Send a JSON:API PATCH to the hub:
The request must pass the usual hub edit and team-scope checks, and a successful response returns the value unchanged. The PATCH preserves the hub’s other settings, so omit tracking when you are changing something else. To leave the container ID as it is, omit settings or settings.tracking. If you include tracking, send the gtm_container_id leaf: an empty object such as {"tracking": {}} is invalid. To clear the setting, send an explicit null; the hub then reads back null, which means no container is configured. The tracking value must be an object containing only gtm_container_id. The API answers 422 to a null or non-object tracking value, an empty object, extra keys, an empty or malformed ID, lowercase characters, and suffixes longer than 20 characters. Errors point at the invalid setting with source.pointer, for example /data/attributes/settings/tracking/gtm_container_id. Validation happens before the update, so a rejected value is never saved. The API stores the ID only; it does not make any analytics request itself.

Not available yet

These settings are not in the admin yet: