Skip to content
DocsWorkspaces and team

Workspace

Workspaces, team, settings and billing

Workspaces and plan limits, inviting teammates, reporting currency and time zone, the MRR goal, annotations, keys and the trial.

A workspace is one product: one set of billing sources, one Search Console property, one snippet and one set of numbers. If you run two apps, give each its own workspace, so their MRR, pages and keywords never mix. Your plan decides how many workspaces you can have and how many people can join each one.

This page covers signing in, workspaces and the team, every settings screen, the keys, and how the trial and billing work.

Signing in

There is no password. On the sign-in page, enter your email and Joinsight sends you a message with a link and a 6-digit code. Both work for 15 minutes, and either one signs you in. The same email creates your account if you're new.

The link opens a page titled "Confirm sign-in", where you press "Sign in" to finish. That extra step is deliberate. Some email security scanners open every link in an incoming message, and a link that signed you in on first open would be used up by the scanner before you clicked it. The code is the fallback when the email is open on a different device, such as your phone, from the browser you want to sign in on.

When Google sign-in is available, the page also shows "Continue with Google". Either option creates your account the first time.

A session lasts 30 days. To end every session on every device, for example after using a shared computer, go to Settings → Account and choose "Sign out everywhere". That signs out browsers only. Connections to AI assistants are separate and are revoked under Settings → AI assistants, as described in Use Joinsight in your AI assistant.

Workspaces

Creating a workspace asks for a name (usually your product's name), a reporting currency and a time zone, which is filled in from your browser and has to be an IANA name. You can change all three later.

Once it is created, the next screen shows the workspace's secret key, once, with a copy button. Your server only needs it for server-side identify(); if you don't need it yet, an owner can rotate a new one later. Continue to setup opens the Setup page.

The workspace switcher at the top of the sidebar lists every workspace you belong to, including ones other people invited you to. "New workspace" at the bottom of the list creates another. When your plan has no room for one, the entry is greyed out, and hovering or focusing it explains why, for example "The Solo plan includes 1 workspace. Upgrade to Team for up to 3."

Only workspaces on your own account count toward your limit. A workspace someone else invited you to belongs to their account and their plan.

The sample workspace

Before your own data arrives, the Overview's first screen offers "Explore with sample data". "Create a sample workspace" builds a separate workspace for a fictional app, with 16 months of Stripe, RevenueCat, Search Console, snippet, App Store and Instagram data. It takes about 20 seconds. Your own workspace stays untouched.

Later, the workspace switcher offers the same thing: when you don't have a sample workspace, for example after deleting it, "Create a sample workspace" appears in the list, and "Preparing sample data" shows while it is built.

The sample workspace is marked "sample data" in the switcher and doesn't count toward your plan, so it is available on every plan. It is never locked when a trial or subscription ends. Its settings, team and billing can't be changed, but you can add annotations to see how they work. It never sends emails, the Monday brief or Slack and Discord posts. You can connect it to an AI assistant to try the MCP server on realistic numbers before your own data is ready.

Team

Settings → Team lists the workspace's members. Each workspace has one owner, the person who created it. Everyone else is a member. As the screen puts it: "Owners manage sources and settings; members see everything and can add notes and links."

In practice, only the owner can:

  • connect and disconnect sources
  • change the General and Notifications settings
  • invite and remove members
  • rotate the secret key
  • choose a plan and manage billing
  • delete the workspace
  • disconnect another member's AI assistant

Members can see every screen, add annotations and campaign links, set the MRR goal, preview the brief, and connect their own AI assistant.

To invite someone, the owner enters their email under "Invite by email" and chooses "Send invite". They get an email saying who added them, with a link to sign in with that address. There is nothing to accept. Access starts right away, and the person appears in the list. To remove a member, choose "Remove" next to them and confirm. Their AI assistant connections to the workspace stop working at the same time.

The member limit counts everyone in the workspace, owner included. On Solo, that's the owner and one other person.

Settings

Settings has eight screens: General, MRR goal, Annotations, Notifications, AI assistants, Team, Keys and Account.

General

Only the owner can change these.

  • Name. Up to 80 characters.
  • Reporting currency. EUR, USD, GBP, CHF, CAD or AUD. Every amount is converted with the daily ECB reference rates. Changing it recalculates the workspace in the background ("Saved. Figures are being converted to the new currency."), so past months are converted too, not only new ones.
  • Time zone. An IANA name such as Europe/Paris or America/New_York. It sets when the Monday brief arrives, at 08:00 local time.
  • Where you sell. "Web, billed by Stripe" and "Mobile, through RevenueCat". This tells Joinsight which setup steps apply to you and how to explain the check that compares Stripe and RevenueCat.

MRR goal

Set a target MRR in the reporting currency. Progress appears on the Overview and in the Monday brief, with an estimated date for reaching it at the last 90 days' growth rate. When MRR hasn't grown over that window, there's no estimate, and the brief says so. A goal makes the weekly numbers easier to judge: €180 of net new MRR means more when you can see how many weeks it leaves.

Annotations

Annotations are dated notes, such as "Launched on Product Hunt" or "Raised Pro to €39". They exist because a change in MRR is much easier to read when its cause sits right next to it. Three weeks after a price change, the bump in contraction is easy to misread as churn.

Add one under Settings → Annotations with a date and a note of up to 140 characters, or by clicking any chart. Two kinds are added automatically: Stripe price changes, and Instagram posts once Instagram is connected. Every member can add notes. Notes added by hand can be deleted, the automatic ones can't.

Annotations show up:

  • on every chart
  • in explain_change through the MCP server, for either period being compared
  • in the Monday brief's "What changed" lines, when one falls in the week
  • in the computed cause of MRR drop and signup drop alerts, which get_alerts_and_health returns

Notifications

Alert and ping emails, the Monday brief, and the Slack and Discord webhooks. Only the owner can change them. Alerts, the Monday brief and new-customer pings covers each setting.

AI assistants

The server URL, setup steps for Claude, ChatGPT and Cursor, "Connected apps", where you see and disconnect every assistant connected to this workspace, and "Recent tool calls", the audit log of the latest 50 calls. See Use Joinsight in your AI assistant.

Keys

Each workspace has two keys.

  • Site key. Public, and starts with js_site_. It goes in the snippet's data-site attribute and identifies the workspace when a browser sends an event. It's meant to be visible in your page source: it lets a browser send events to the workspace, not read anything from it.
  • Secret key. Starts with js_sk_. It authenticates server-side identify() calls as Authorization: Bearer js_sk_.... See Link visitors to customers with identify().

Joinsight stores only a hash of the secret key, so the Keys screen shows just its last four characters. The key is shown once, right after you create the workspace. If you didn't copy it, or it may have leaked, the owner chooses "Rotate secret key". The new key is shown once, with a copy button. The old key stops working immediately, so update your server's environment right away and expect a few failed calls in between. Rotate whenever the key may have leaked, for example after it was committed to a repository.

Account

"Sign out everywhere", and for the owner, "Delete workspace". To delete, type the workspace's name to confirm, then confirm again. This deletes every source connection, credential and synced number for the workspace at once, and it can't be undone. Deleting a workspace frees its place on your plan.

The trial

Every account starts on a 14-day trial with every feature and no card on file. The 14 days start when you connect your first revenue source, Stripe or RevenueCat, not when you sign up. Until then, the billing page says "Trial: the 14 days start when you connect Stripe or RevenueCat." Setting up the snippet and Search Console first costs you nothing.

During the trial, the sidebar shows the days left. The account owner also gets up to three emails:

  • Day 2 to 4: a setup reminder, if the snippet hasn't sent an event yet, or if it has but identify() hasn't been called. Steps you chose to skip don't count.
  • Day 12: what Joinsight found so far, such as new customers, how many were attributed and your top page.
  • Day 14: if fewer than 5 new paying customers were matched to a first touch, an extension notice.

The extension is there because attribution needs new customers to arrive after the snippet is live, and a slow fortnight says nothing about the product. If fewer than 5 new paying customers were linked to a first touch during the trial, across all your workspaces, the trial is extended once, by another 14 days. Nothing needs doing on your side, and the billing page then reads "Extended once."

When access ends

A workspace is locked when its account's trial ends without a plan, or when a paid subscription is canceled, paused or stays unpaid after Stripe's retries. Locked means:

  • Workspace screens redirect to Billing. Only Billing, Settings → Team and Settings → Account stay open.
  • Those three show a banner, such as "Your trial has ended" or "Your Solo subscription is unpaid", saying that data keeps syncing and what is paused until a plan is active. The owner gets a link to choose a plan; other members are told the owner has to.
  • In them you can still subscribe, manage members, sign out everywhere or delete the workspace.
  • The MCP server refuses tool calls with a message that says access is paused and where to choose a plan. Assistants stay connected, so they work again as soon as a plan is active.
  • Alerts aren't checked, and no new-customer pings or Monday briefs are sent.

Your sources keep syncing the whole time, so every number is current the moment you subscribe. A sample workspace is never locked.

Plans and billing

Plans belong to the account and cover every workspace on it. They differ only in workspaces and team members. Every plan includes every source, alerts, the Monday brief and the MCP server.

PlanPriceWorkspacesTeam members per workspace
TrialFree for 14 days12
Solo€29 a month or €290 a year12
Team€79 a month or €790 a year3Unlimited

Yearly billing costs ten months' worth, which the billing page labels "Yearly, two months free". Team also includes priority support. Prices are in euros and exclude VAT, which Stripe adds at checkout where it applies. Revenue never moves you to a different plan: a workspace at €50k MRR pays the same as one at €1k. See pricing.

The billing page may also list a Founding plan: €190 a year, yearly only, with the same limits as Solo, for the first 50 accounts. The page shows how many places are left and stops listing it once all 50 are taken. An account that holds a Founding place keeps it, and can resubscribe at that price after a cancellation.

Open Billing from the account menu at the bottom of the sidebar. It shows your plan, your usage ("Using 1 of 1 workspace and 2 of 2 team members in this workspace") and the plans. Only the owner can buy or change a plan. Choosing one opens Stripe Checkout, and the page updates within a few seconds of payment. Once you have a subscription, "Manage billing" opens the Stripe billing portal for your subscription.

If a renewal payment fails, the plan stays active while Stripe retries, and the billing page says "The last payment failed; update your card to keep access." A subscription that ends after a cancellation shows "Your Solo subscription has ended" (with your plan's name), and one left unpaid after failed retries shows "Your Solo subscription is unpaid". Either way the workspace is locked, as described in When access ends, until a plan is active again.