Account & Settings
Your account: your plan and billing, your profile and login, the company context that grounds every AI draft, and your data controls.
Settings on smaller screens
Usage tables scroll inside the Settings pane. Long device names wrap beside the Rename control, keeping the rest of the page within the screen.
Overview
Account groups role access, subscription, notifications, and writing preferences into expandable sections. Choose a section heading to open its controls. Direct links to a preference open the matching section for you.
Settings is where you manage the account itself, everything that isn't a run. It's the home for your identity and your money, not a work surface.
It works on a phone. The sub-tab row scrolls from its first tab, cards and sections go to one column, and a save button takes the full width of its row, so setting a revenue target or pasting a Slack webhook does not need a desk.
Plan & billing
- Your roles. The roles this account holds, each as its role mark (the dot in the role's accent and its name that Today and Activity use), linking to Your roles for renewals, setup links, and per-role rollups. The section strip at the top of Settings is a row of pills with a hairline under it, the same shape as the strip above every Work panel.
- What you own. The fuller ledger: every role, plugin and bundle on the account with its source and expiry. Subscription sits under it, and the Stripe portal handles invoices, payment method and cancellation. Cancel subscription asks one optional question first (the main reason you are leaving, with room for a note), then opens Stripe's cancel screen. You can skip the question, and a failed save never stops the cancellation. When the deployment has a booking link set, it also offers a 30-minute call with the founder. Your answer is seen only by the people who run salesascode.com.
- Adding people. There is nothing to upgrade to. A seat licenses every role, so growing a team means inviting somebody from Team admin, which adds a seat to your subscription at the same price and prorates it from the day they join. See Teams and seats.
- Entitlements. The union of everything you have bought or been granted, roles and plugins alike. This is what the runtime checks before it runs.
A licence takes effect on the next scheduled run. The scheduler reads your live entitlement rows each pass, so there is no cache to wait out and nothing to re-provision by hand.
Coming back from checkout
- What the confirmation means. Returning from Stripe, this page reads your actual licence rows before it says anything. "You're in" names what is now on the account. It is not inferred from the redirect.
- "Payment received. Provisioning your licence." The payment cleared and the licence has not been written yet. Stripe tells us about a completed payment on a separate callback, usually within seconds. The page watches for the licence and refreshes itself when it lands, so leave it open.
- If it stays on that message. After about a minute the page says so and offers contact. Your payment is not at risk and nothing is lost; the licence gets applied by hand.
- Buying something you already own. The cart drops it and tells you, rather than charging you a second time for the same perpetual licence. A bundle that includes something you own still sells, because the rest of it is new.
Profile & login
- Profile. Your name, title, territory or region, and work email. All four are stored against your account, so they follow you to another browser or machine rather than living only where you typed them. Territory and work email also ground AI drafts, and the work email is what filters you out of attendee lists in Meeting Prep. Name, title and territory are the same three fields the identity card on every persona console sets, so filling them in either place is enough: they reach the drafts you ask for and the ones your schedule writes. Until 2026-09-06 they only reached the first. Email signature (added 2026-09-12): three or four lines, appended exactly as written as the last block of every draft your roles write for you to send. Without one the draft ends with your name, role and company from the fields above.
- Password. Set one if you signed up with a magic link and want a password too. Google sign-in keeps working either way. Any password change, yours or, if your session were ever compromised, an attacker's, sends a confirmation email to your account address so you'll notice a change you didn't make.
- Forgot it? Use Forgot your password? on the sign-in page. We email a link that works once and expires in an hour. Setting a new password signs out every other session, including anyone else's. If you signed up with Google there is no password to reset: keep using Continue with Google.
Brand & Company
Who you sell for, company, positioning, ICP, differentiators. This grounds every AI draft so output is about your business, not generic SaaS. Most of this is also built and enriched by the GTM Context Dossier during onboarding; Settings is where you edit it by hand.
Honest saves. The Profile and Brand save buttons confirm against your account, not just this browser: "Saved to your account" means the cross-device sync accepted the write; if sync is unreachable you'll see "Saved on this device" with a retry note instead of a false success.
Honest loads. Opening Settings on a machine you have not used before shows "Loading your account settings…" beside both save buttons, and holds them, until your account record arrives. The fields then fill in. This is deliberate: the form used to draw itself before the record landed, so a browser that had never synced showed empty fields over a full account, and saving from there wrote those blanks back. A field you are typing in is never redrawn out from under you, and neither is one you have already changed this visit.
Security artifacts. List the security and compliance documents you can send a buyer's InfoSec team (SOC 2 report, pen-test summary, security whitepaper, one per line). When a late-stage deal stalls in a security review, the stall accelerator's drafted nudge offers these proactively instead of waiting on the questionnaire.
Calendar
The Calendar tab takes your calendar's published iCal address (in Google Calendar: Settings, click your calendar, "Secret address in iCal format"; Outlook and Apple publish the same kind of address). Saving it syncs immediately, and Sync now re-reads it whenever you want. We only ever read the feed.
The address is a credential. Anyone holding a published calendar address can read that calendar, so it is stored encrypted with the same AES-256-GCM helper that protects your OAuth tokens, and it is never sent back to the browser. The tab shows which provider is configured and when it last synced, not the address itself. Remove feed stops the reading; meetings already synced are kept, because forgetting the address is a different request from deleting what it produced.
What a sync brings in. Meetings from roughly the last week and the next two months, cancelled ones skipped. Each is matched to the calendar's own event id, so re-syncing updates a meeting rather than duplicating it. Those meetings feed Meeting Prep, and any meeting with a real start time also gets the prep reminder that goes out shortly before it starts.
Timezones. Most calendars state a meeting as a wall-clock time in a named zone ("nine in the morning, Chicago"), which is only an instant once you know that zone's offset on that date. We resolve it against the timezone database, so a 9am standup is 14:00 UTC in August and 15:00 UTC in January, and its reminder lands at the right moment on both sides of a daylight-saving change.
Recurring meetings. A weekly standup is one entry in the feed carrying a repeat rule, so we expand it into the individual meetings inside the sync window. Daily, weekly, monthly and yearly rules are covered, including "every other week", "Mondays and Wednesdays", "the third Thursday" and "the last Friday", along with an end date or a count, dates the series skips, and a single meeting moved out of its slot. Each instance is tracked separately, so re-syncing updates them rather than duplicating.
Where it is still honest about time. An all-day entry has no time at all, and a meeting with no zone attached means "whatever the clock says wherever you are". Neither has an instant to state, so both keep what the calendar gave and stay out of the reminder queue rather than being given a guessed hour. A repeat rule using a pattern we do not expand keeps its first meeting rather than being expanded wrongly: one meeting missing is a gap, but meetings on the wrong days would be worse.
Confirming your email address
When you sign up with an email and password we send a confirmation link to that address. Click it and the Account tab stops showing the banner. The link works once and lasts a day; you can send a fresh one from the banner at any time.
You can use it before confirming. Signing in, connecting tools, running your roles: none of it waits on the email. What does wait is subscribing. Every message about a purchase, the receipt, the renewal notice, and the email we send when a card fails, goes to whatever address you typed, so we confirm it can receive mail before taking money against it. Discovering a typo at the first failed charge is the expensive way to find out.
Clicking the link does not sign you in. It confirms the address and sends you to the sign-in page. An emailed link that logs somebody in is exactly the thing worth not building.
Signing in with Google needs no confirmation step: Google has already established that the address is yours.
Team leaderboard
If your team owner turns the leaderboard on, your name and your numbers appear on it beside your teammates'. The Keep me off the team leaderboard checkbox on the Account tab removes you from the ranking: your activity still counts towards team totals, you are simply not listed and not ranked. Your owner cannot override it.
The board shows a name worked out from your email address, not the address itself.
Refer someone
Open Refer someone on the Account tab to copy your own link. When a person signs up through it and pays for their first seat, you get one month of a seat ($99) as credit on your Stripe balance, and Stripe takes it off your next invoice. If you have never bought a seat, the credit waits for your first invoice.
The credit is never cash, and nothing is given at signup: it lands only after their first paid invoice clears. The person you refer pays the normal price. No credit is given for your own second account, for somebody at your own company's email domain, or when both accounts pay with the same card. The card check runs again whenever a card is added to your account later, so adding the card the person you referred pays with takes that credit back (and so does that person adding a card you already hold), and the referral reads "Not credited" with that reason. You can earn at most 12 credits in any 12 months. If their first seat invoice collected less than $99 (a prorated start, say), the credit is what it collected. If that payment is later refunded in full or disputed, the credit is taken back from your balance.
Each person who used your link shows as one row with the date they signed up and one of four statuses: Signed up, not paid yet; Paid, credit on its way; Credited to your balance; or Not credited, with the reason. The list never shows who they are.
What you are spending on AI
The AI usage card shows this month's spend, the number of calls behind it, and a breakdown by what produced them. If it cannot load, it says so and what to do; it will not sit on "Loading…".
If you have saved your own provider key in a role's console, runs on your key are billed to you and are not counted here as ours.
What ran against your tools
The Tool usage card, under the AI usage card, counts this month's calls to your connected tools: each sync read, each CRM write, each publish and each send, by tool and operation. A sync counts once per object it read, even when the tool answered in several pages, so the tool's own count can be higher. The last column says what each tool meters, such as HubSpot's daily call limit, or that the tool keeps no usage quota at all, as with Attio or Microsoft Graph. Only your workspace's calls are counted. If the card cannot load, it says so rather than showing an empty month.
Desktop notifications
Turn these on from the Account tab and you get a desktop notification for the handful of things worth interrupting you: a meeting starting soon with prep ready, your morning queue when the drafts land, a champion going quiet on an open deal, and a writeback finishing.
Per device. A browser subscription belongs to that browser on that machine, so turning it on at your desk does not turn it on on your laptop or your phone. Turn it on in each place you want it.
Your browser asks once. We only request the permission when you click the button, never on page load, because browsers remember a refusal and most will not ask again. If you have already blocked notifications for this site, no button can undo that: it lives in your browser's own settings for the site, usually behind the padlock in the address bar.
On iPhone and iPad, Safari only delivers notifications for a site added to the Home Screen. Add it there first, open it from the Home Screen icon, then turn this on.
Send test appears once this device is subscribed, and delivers one notification straight away so you can confirm it arrives instead of waiting for something real to fire. It answers three different ways and the difference matters: it was sent to N devices, there is no subscription stored for your account, or this browser's subscription had expired and has been removed, in which case the toggle above flips back to off and you turn it on again.
Turning it off removes the subscription for that device immediately. It does not change your email preferences, which are separate and listed below.
Email preferences
Every way the product can reach you lives in one card, Notifications, on the Account tab: the coach digest email, desktop notifications, and the two Slack webhooks. Quiet days send nothing on any channel.
- Coach digest. Cadence control for the coaching summary email: weekly, daily, or off.
- Your daily line. Not set here. Pick the channel and the hour at the bottom of Home. Settings used to carry a second daily email, the weekday Morning Brief, with its own switch; it sent a different five things at a fixed hour and its main button opened a page that no longer exists. It is gone, and Home's control is the only one.
- Morning queue email. The 7am note telling you drafts are waiting. Every one carries a one-click unsubscribe link; unsubscribing sets the preference to off, and you can turn it back on here whenever you like.
- Slack daily rollup digest. In the Notifications card on the Account tab (it sat on API & AI until September 2026), paste a Slack incoming-webhook URL to get a once-a-day Slack pulse of what your roles did, runs today and this week, any errors, top outcomes, and pace toward your goals. The webhook is stored encrypted; the cron dedupes to once per day and skips quiet days. Clear it anytime to turn the digest off. Opt-in and per-user, separate from the Slack DM alerts webhook so the two never double-post.
- Slack DM alerts. A separate personal webhook that carries goal-pace alerts and morning-queue reply notifications. Alerts fire only when their crons find something; quiet days send nothing. (The daily coach digest DM this webhook once carried was retired; the coach digest email remains.)
When a setting will not load
Every preference control on this page reads its stored value when the page opens. If that read fails, because the network dropped or the API answered with an error, the control now says so beneath it: "Could not load your saved setting. Showing the default; save to overwrite it."
Treat that as a warning, not a value. The control is showing its default, which may not be what you have stored, and pressing Save from there writes the default over your real setting. Reload the page and wait for the message to clear before you change anything. Your saved settings are safe on the server either way; it is only this page's view of them that is stale.
The same goes for the copy button on a coaching token. If the browser blocks clipboard access, the button reads "Copy failed" for a moment rather than doing nothing at all. Select the token and copy it by hand.
AI writing style
Three rules always apply. Every AI request the platform makes for you carries them, with no setting to find: no em or en dashes, short words and active voice, and no filler like "seamless" or "game changer". They cost about 80 input tokens.
The AI writing style toggle on the Account tab sends the full writing guide instead, to everything the AI writes for you: composed emails, morning drafts, launch drafts, briefs, coaching, roleplay buyers and score cards, brain reflections, and hosted-run drafts. On top of the three, it cuts the prose that sounds like insight and says nothing, the words that gesture at a thing instead of naming it ("landscape", "unlock", "significant impact"), and headers or bullets forced onto a short note.
It costs tokens. The full block rides along as roughly 575 extra input tokens on every AI request while the toggle is on, in place of the 80 the always-on rules cost. Those tokens are billed like any others, so AI spend and monthly AI-budget use rise a little. Off by default; flip it off anytime and the next request drops the block.
Team default. On a team workspace, the owner can set a team-wide default from the same card. It applies to every rep who hasn't picked their own setting; a rep's own On or Off always wins. Turning the team default on means every inheriting rep's AI requests carry the extra tokens, so team-wide AI spend rises with the number of reps it reaches.
My agent
A short instruction that goes in front of every AI request made for you: how you talk, who you sell to, what you never say. "I sell to finance leaders at mid-market manufacturers. Lead with payback period, never with features." It sits above the writing rules and your company context rather than replacing them, so it steers the voice and leaves the grounding alone. Write it on the Account tab, under AI writing style.
One agent applies at a time. You can keep several and turn them on and off, but when more than one is on the server uses the most recently created one and only that one. That is the rule the AI path actually follows, so the list marks which agent is in use and which are on but not used, rather than showing them as equals.
It reaches your interactive AI requests and the scheduled runs alike. Deleting an agent puts your drafts back on the writing rules and your company context, and changes nothing else.
Coach API tokens
The Coach API tokens card on the Account tab mints a bearer token that reads your own coaching data from outside the app, so a cadence tool, an internal wiki, or a browser extension can show your skill profile without you opening a tab. Tokens carry the coach:read scope and nothing else: read-only, your data only, no writes and no team data.
Read the note under the endpoints before you build on this. The tokens work; the data behind them is not currently produced.
The endpoints. Two, both GET, both returning JSON:
/api/coach/v1/me/skill, your current score per skill dimension with its trend./api/coach/v1/me/drills, the drills queued for you.
Both will answer empty for most accounts, and here is why. Skill scores and drills were written by in-app coaching surfaces that the move to scheduled roles removed, and nothing has written either since. A third endpoint, the one that returned open plays, was withdrawn in August 2026 for the same reason and now returns 404. So a token mints and authenticates correctly, and these two read whatever your account already held rather than anything current. Build against them only if you know your account has the data.
Authenticating. Send the token as a bearer header. The routes set CORS headers, so a page on another origin can call them straight from the browser:
const r = await fetch('https://salesascode.com/api/coach/v1/me/skill', {
headers: { Authorization: 'Bearer ' + token },
});
const skill = await r.json(); Handling the token. The plaintext is shown once, at creation, and never again; copy it before you close the row. Treat it like a password. A token embedded in a public page is readable by anyone who views the source, so put it behind your own server if the page is not private. Revoke from the same card and access stops immediately.
The token table shows each token's name, prefix, scopes, when it was made and when it was last used, so a token nothing has used in months is easy to spot and retire.
Your data
- Download my data. The first button on the Data tab is your full account export: everything tied to your account on our servers, as one JSON file. Profile, connections, activity, records, audit trail, sessions and subscription. This is the GDPR Article 20 export, and it is the one Privacy refers to. Your webhooks and their delivery log are in it, listed by scheme and host; their signing secrets and URL paths are not, since a webhook path often holds a token.
- Export this browser's settings. A smaller, different thing, and worth not confusing with the one above: it downloads what this browser holds, your settings and brand context, and the matching Import reads one back. For your brain state, use Data Export.
- Sample data. Loading and clearing a sample book is per role, from that role's console, reachable from Your roles. It seeds real rows on the server so the deterministic tiers and drafts run against them, which is why it does not live in Settings.
- Reset your working data. Clears your book, accounts, opps, contacts, meetings and anything you have recorded on a panel, along with the activity synced from your connections, while keeping the account itself: login, plan and entitlements, brand and company context, API keys and webhooks, team membership, and the settings that configure a connection rather than describe a book. Use it after experimenting, or to start clean without closing anything. Show me what would be cleared lists the exact counts first, and the reset button stays disabled until you have seen them; confirming takes typing RESET. A connected calendar or CRM refills on its next run.
- Delete. Self-serve account deletion lives in the Danger zone. It removes your account and your server-side data; it can't be undone. If you are on somebody else's team and you were the last person able to manage it, that ability goes back to the account paying for that team, so your leaving never locks your colleagues out of their own roster. A team you bought yourself closes with your account.
The work runs on our servers, so we process the data you connect to do it. It is encrypted at rest, isolated to your tenant, never sold, and never used to train models, and you control it: export or delete at any time.
Cross-tenant brain contribution, retired
Settings used to carry a team-owner toggle called cross-tenant brain contribution. It was removed in September 2026, along with everything behind it.
It was built to work like this: patterns recurring across your team and at least two others could be proposed, anonymized and aggregated, for promotion into the shared playbooks. What it drew from was a per-team library of playbook overrides, and the editor for writing those was retired long before, in the move to the current app. Nothing could write an override, so there was nothing to find a pattern in, so no proposal was ever raised and no shared playbook has ever carried a promoted entry.
Nothing you had was shared, and nothing about what your AI drafts are grounded in changes. Your own knowledge library, described above, is unaffected and is still private to your org.
Related
- Connect your tools, link your CRM, inbox, and calendar for the scheduled runs.
- API Keys & MCP, the advanced path for driving your account from your own client.
- Data Export, export/import your brain state.
- Pricing, which is one number: a seat, per person, per month.