Manage the staff team and console settings
Add team members, set their roles and sign-in, change your brand's settings and notices, and set up your own account, push notifications and email digest.
Four pages of the staff console set up the console and what customers see of your brand. The team page, /staff/team, lists everyone who works on your brand with their role, their last sign-in, whether they use two-factor authentication and which storefront account they have. The settings page, /staff/settings, holds your brand's details, its feature switches, the Tier 1 claim limit, the error page, the look of your emails, your search appearance, your marketing (tags, server-side conversions and ad spend) and your API keys. The notices page, /staff/notices, posts the announcements, maintenance windows and incidents your customers read. My account, /staff/me, holds each member's own settings: their name, password and two-factor authentication, push notifications, email digest, table density and saved views.
Before you begin
Section titled Before you beginAny member can see the team. What else each task needs:
| Task | Lowest role | Step-up |
|---|---|---|
| Add a member, sign a member out, require two-factor authentication, or choose how long a browser is remembered | Admin | No |
| Change a role, remove a member, send a password link or set a password, reset two-factor authentication, or change a storefront account | Admin | Yes |
| Open the settings page and change anything on it, the claim limit included | Admin | No |
| Turn on a conversion platform, send a test event, connect an ad account or add spend by hand (all on the marketing tab) | Admin | No |
| Post, change and resolve notices | Tier 3 support | No |
| Delete a notice | Admin | No |
| Change anything on My account | Your own account, any role | No |
| Choose a daily or weekly email digest | Billing | No |
The owner counts as an admin. Nobody can change the owner's role, remove the owner or reset the owner's two-factor authentication from the console: ownership moves only when Coritan support transfers it.
A step-up is a fresh password or authenticator code, which lasts 10 minutes; Sign in to the staff console explains it. The same team is on the organization's Members tab in the Coritan dashboard, which Manage members and roles covers, and Organization roles and permissions says what each role can do.
Add a member
Section titled Add a member- Open
/staff/teamand choose "Invite member…". - Enter their email, a name if you like, and their role:
readonly,support_tier1,support_tier2,support_tier3,billingoradmin. New members getsupport_tier1unless you choose another. - Choose how they get a password. Send the invitation email, which is the default, or set a temporary password and give it to them yourself.
- Choose their storefront account, as Change a member's storefront account explains. The default gives them the customer account with their email.
The invitation links to /staff/reset-password on your storefront domain and works for 2 hours. A temporary password needs 8 to 128 characters, with a lowercase letter, an uppercase letter, a digit and a special character. Each admin can add 20 members an hour.
Warning
Members sign in with their Coritan account, the same email and password they use on coritan.com. A temporary password is only for an email that is new to Coritan, or an account that has never had a password of its own and that no other organization holds. For anyone else, send the invitation: they keep the password they have, and the console says so under the password if you set one.
Change a member's role
Section titled Change a member's roleOn /staff/team, open the menu at the end of the member's row and choose "Change role…". Pick the new role in the "Change role" dialog and confirm it is you if the console asks. The change applies at once. It signs the member out of every console session, so their next session carries the new role. A member moved below Tier 2 also loses any access to a customer's server that a conversation lent them.
You cannot change your own role. Ask another admin.
Change a member's storefront account
Section titled Change a member's storefront accountSigning in to the console also signs a member in to your storefront as a customer, so they can use your product the way customers do. Their storefront account is one of these:
- By default, the customer account with the member's email. We find it, or create it the first time they sign in to the console.
- An existing customer account you attach, whatever its email. Use it for someone who was your customer before they joined the team.
- None. The member uses the console only.
To change it, select the storefront account under the member's name on /staff/team. The "Storefront account" dialog offers "Attach an existing customer", "Create a new account" and "Detach". Confirm it is you if the console asks. Only an active account can be attached, and one account belongs to one member. Detaching keeps the customer account with its services and invoices. Storefront sessions the console opened on the previous account end.
Help a member sign in
Section titled Help a member sign in- Send a password link: choose "Reset password…" in the menu of the member's row. We email them a link to
/staff/reset-passwordthat works for 2 hours, and a newer link replaces an older one. - Through the API, set a temporary password when email cannot reach them, only for an invited account that has never had a password of its own and that no other organization holds. The console sends a link. A member with their own password gets a link instead, because their password is also their coritan.com password. It signs them out of every console session.
- Reset their two-factor authentication when they lost their phone, with "Reset two-factor…" in the same menu. It removes their second factor, ends their sessions and forgets the browsers they remembered. They sign in with their password and, if your brand requires two-factor authentication, set it up again straight away.
Each of these needs a step-up. You cannot reset your own two-factor authentication here: turn it off on My account, under Security, with a current code, as Sign in to the staff console explains.
Sign a member out or remove them
Section titled Sign a member out or remove them- Sign a member out with "Sign out everywhere…" in the menu of their row to end every console session they have, and the storefront sessions those opened. It also forgets the browsers they remembered, so their next sign-in asks for a code. It needs a step-up, and they can sign in again.
- Remove a member with "Remove…" in the menu to take away their access to the console and the organization. It ends their sessions and any access to a customer's server that a conversation lent them. Their Coritan account and their storefront account stay. You cannot remove yourself.
Require two-factor authentication
Section titled Require two-factor authentication- Set up your own two-factor authentication first, as Sign in to the staff console explains. The console refuses the rule while you have none: the switch stays off and says "Set up your own two-factor first, from My account".
- Open
/staff/teamand find the "Sign-in policy" panel. Turn on "Require two-factor for staff". The panel's subtitle then reads "Two-factor is required of everyone", and a confirmation asks you to choose "Require two-factor".
From their next sign-in, a member without two-factor authentication must set it up before the console opens, and nobody can turn theirs off while the rule is on. The feature switches on the settings page change the same rule.
While the rule is on, a callout above the team table names the members who have no two-factor authentication yet, with a "Show them" button. The "Two-factor off" tile counts them, and the "Two-factor" column of the table shows each member's state. A member who lost their phone is helped with "Reset two-factor…" in the row's menu.
Choose how long a browser is remembered
Section titled Choose how long a browser is rememberedA member who signs in with a code can tick "Remember this browser", and that browser then skips the code at their next sign-ins (Remember this browser). The password and the step-up for money and server actions are asked as usual. You set how many days a browser stays remembered. The default is 30.
- Open
/staff/teamand find the "Sign-in policy" panel. - In the "Remember this browser" select, choose Never, 7 days, 14 days, 30 days, 60 days or 90 days. A member below admin sees the select but cannot change it, and the tip says "Needs admin or higher".
- If you choose fewer days than before, the console asks you to confirm. "Remember browsers for 7 days?" stops the browsers remembered more than 7 days ago from skipping the code at once, and keeps the others until 7 days after they were remembered. "Stop remembering browsers?" stops every remembered browser from skipping the code, so every sign-in asks for one. Choose "Shorten the period", or "Stop remembering" for Never.
Choosing more days does not lengthen the browsers already remembered, which keep the number of days they were remembered for. Through the API you can set any whole number from 0 to 90.
Change the brand's details
Section titled Change the brand's detailsThe settings page, /staff/settings, changes the details your storefront, emails and invoices show. They are the same details as on the organization's Settings tab on coritan.com.
- Brand: the brand name, the time zone as a name such as
Europe/London, the support and billing email addresses, the logo and favicon URLs, the primary and secondary colours as#rrggbb, and the terms and privacy URLs. Every URL starts withhttps://. - Legal: the legal name, registration number, tax ID, two-letter country code and registered address.
- Invoicing: the invoice prefix (1–20 letters, digits,
-and_) for new invoices, the default currency, the tax rate from 0 to 100%, the payment terms from 0 to 120 days, and an invoice footer of up to 4,000 characters. The currency must be one Coritan has enabled.
Emptying a text field clears it, except the invoice prefix, country and currency. The custom domain, outgoing mail, organization name and billing mode are on coritan.com only, as Change organization settings explains. The settings page shows the custom domain and whether Coritan has verified it.
Turn features on or off
Section titled Turn features on or offThe features tab of the settings page, /staff/settings?tab=features, has five switches:
| Switch | What it does |
|---|---|
coupons |
Lets customers enter coupon codes at checkout. While it is off, the checkout shows no code field and refuses every code. A billing member can also turn it on, as Offer coupon codes explains. |
require_mfa |
Requires two-factor authentication of every member, as in Require two-factor authentication. |
require_customer_mfa |
Requires two-factor authentication of every customer. From their next sign-in, a customer without it must set it up, and no customer can turn theirs off. |
maintenance |
Shows visitors a maintenance page instead of your storefront. Members signed in to the console still see the whole site, and the API keeps answering. |
free_port_requests |
Makes customers on your free tier ask for an extra port through a conversation, as Add a port for a port request explains. Paid servers are not affected. |
Set the Tier 1 claim limit
Section titled Set the Tier 1 claim limitA Tier 1 member can hold only so many open conversations at once, which keeps the queue moving. The limit is 10 until an admin changes it, and it takes a whole number from 1 to 100.
- Open
/staff/settings?tab=support-desk, the support desk tab. - In the "Support desk" panel, enter a number in "Tickets Tier 1 may hold at once". The hint says that Take next, replying to an unclaimed ticket and being assigned one all stop at this many open tickets.
- Choose "Save claim limit", or "Discard" to keep the old number.
It applies from the next conversation a Tier 1 member takes, and nobody loses a conversation they already hold. Tier 2 and every role above it have no limit. Answer customer conversations explains what a member sees at the limit.
See who holds what
Section titled See who holds whatUnder the claim limit, the "Who holds what" panel lists everyone who answers tickets: every member except Read-only members and those who have not signed in yet. It shows the open tickets on each person's name against how many they may hold, so you can see who is full and who has room. Members with no tickets still have a row.
| Column | What it shows |
|---|---|
| Person | The member's name, with their role under it. |
| Holding | Open tickets on their name, as "3 of 10" with a bar for a member who has a limit, and "no limit" for the others. |
| Last reply | When they last replied on one of those tickets. It turns red when that was over 24 hours ago, or when they hold tickets and have not replied yet, because a customer is waiting behind a name. |
The people holding the most tickets come first. Select a row to open that person's open tickets in the inbox, or choose "Open the inbox" for every open ticket.
Design the error page
Section titled Design the error pageWhen your storefront, or a site on one of your customers' services, does not answer, our network shows visitors an error page with the status 502 or 504. Until you turn yours on, visitors see Coritan's standard page. Set yours on the error page tab, /staff/settings?tab=error-page:
- The words: a heading of up to 80 characters and a message of up to 500.
- How much it tells a visitor:
reference(the default) adds one line with the request ID and time for a customer to quote to support,minimalshows only your words and links, andfulladds the connection diagram and the diagnostics. - The links: a support button (an
https://URL or amailto:address) and an updates button (anhttps://URL, such as your status page), each with a label of up to 40 characters. The page shows a button only when you set its link. - The look: a
lightordarktheme, your own background, card, text and accent colours over it,sharp,softorroundcorners, the Inter font or the visitor's own, and one of four styles for the status line.
The logo and accent colour default to your brand's own. Preview the page with either status before you turn it on, since the preview works while the page is off. The Error 502 or Error 504 label, the Coritan footer and our response headers stay on every page, so visitors and support can tell which network answered. A site with an error page of its own keeps its page.
Design your emails
Section titled Design your emailsEvery email your brand sends uses one design. Set it on the emails tab, /staff/settings?tab=emails:
- A
lightordarktheme, with your own accent, background, card and text colours over it. sharp,softorroundcorners, and the reader's system font, Inter, or IBM Plex Sans with Syne headings.- The header: chosen by the logo's shape (the default, which shows a wide logo alone and a square one beside the brand name), the logo beside the brand name, the logo alone, or the name alone. The logo always keeps its own proportions.
- A one-line footer of up to 200 characters, and whether to show your legal name and registered address under it.
- Up to 3 footer links, each with a label of up to 30 characters and an
https://ormailto:address.
The accent colour and logo default to your brand's own. Preview four samples before you save: a welcome email, an invoice, a notice that a service was suspended, and the email a customer gets when your team replies to a conversation. Send yourself a test to see one in a real mail client; each member can send 10 tests an hour.
Set your marketing tags
Section titled Set your marketing tagsThe marketing tab of the settings page, /staff/settings?tab=marketing, is Settings › Marketing. It holds three sections one after the other: "Tags and pixels", "Conversions" and "Ad spend". Only an admin or the owner reads or changes any of them.
"Tags and pixels" has one panel for Google Analytics 4, Google Ads, Meta, TikTok, Microsoft Advertising, Reddit, X and Google Tag Manager. Paste each platform's ID, use "Clear" to empty a panel and "Save tags" to save every panel at once. Add analytics and ad tags to your storefront says where to find each ID and how to check it.
Send purchases from our servers
Section titled Send purchases from our serversA browser can block a tag, so the "Conversions" section makes our servers send each paid purchase, renewal, sign-up and refund to the platforms you turn on as well. Send purchases to your ad platforms explains what is sent, and what a buyer's cookie choice changes. This section is where you set it up from the console.
You need an account on each platform, with its pixel or data source already made, and its ID and secret to hand. Set up each platform says where to find them.
The section has one panel for each of Google Analytics 4, Google Ads, Meta Conversions API, TikTok Events API, Microsoft Ads, Reddit Conversions API and X Conversions API. Each panel names its platform and shows its state as a pill: "On", "Off" or "Test mode". Under the pill:
- "Last delivery": the newest event the platform was sent, its status ("Sent", "Failed" or "Skipped"), when, and the reason when it did not go through.
- "Last 30 days": how many of your paid first purchases the platform was sent, as "Sent for 87 of 92 paid orders · 94.6%". Renewals, upgrades and free servers are not counted. With no paid orders in the 30 days the percentage reads a lone dash.
Turn on a platform
Section titled Turn on a platform- Open Settings › Marketing and find the platform's panel under "Conversions".
- Fill in its settings. The fields differ by platform:
- Google Analytics 4: "Measurement ID".
- Google Ads: "Conversion ID" and "Conversion labels", one each for "Purchase", "Renewal", "Sign-up" and "Lead". Set at least the purchase label.
- Meta Conversions API: "Pixel ID" and, to use test mode, a "Test event code".
- TikTok Events API: "Pixel code" and, to use test mode, a "Test event code".
- Microsoft Ads: "Conversion goal name", "Look back (days)" (1 to 90, 30 unless you set it), "Wait for the browser (minutes)" (60 to 1440, 120 unless you set it) and "List purchases with only an email" (on unless you turn it off).
- Reddit Conversions API: "Pixel ID".
- X Conversions API: "Pixel ID" and "Event IDs", one each for "Purchase", "Renewal", "Sign-up" and "Lead", each starting with
tw-. Set at least the purchase ID.
- Paste the platform's secret under its label: "API secret" for Google Analytics 4, "Access token" for Meta and TikTok, "Conversion access token" for Reddit, and the four "OAuth credentials" for X ("Consumer key", "Consumer secret", "Access token" and "Access token secret"; X needs all four). Google Ads and Microsoft Ads take no secret.
- Turn on "Send conversions" (on the Microsoft Ads panel, "Serve the offline conversion file").
- Select "Save changes". The footer names what you changed before you save, such as "Unsaved changes: settings and secret". Each panel saves on its own.
You have finished when a toast says "Meta Conversions API turned on", the pill reads "On" and the footer reads "Saved just now". After the next paid order, "Last delivery" shows what was sent and "Last 30 days" counts it. A value the platform's format refuses appears under its own field with the reason, and the field takes focus; nothing is saved.
A saved secret is never shown again. The panel says "A secret is saved" with "Replace" and "Clear…". "Replace" opens the box for a new one. "Clear…" asks first, then turns the platform off and removes the secret, so turning it on again needs a new one.
"Send renewals" is off by default. Turn it on to send each paid renewal as its own conversion.
Test a platform
Section titled Test a platform"Test mode" sends every event as a test:
- Meta and TikTok send each event with the test event code, so it shows under Test events in the platform and not in live reporting. Test mode needs that code.
- Google Analytics 4 sends to Google's validation endpoint, and Reddit sends its test flag.
- Google Ads, Microsoft Ads and X have no test mode. While "Test mode" is on for one of them, nothing is sent.
"Send test event" sends one made-up purchase of one currency unit, named "Test product", with nothing about a person, and shows the event, the status and the platform's error. It uses the saved settings, so the button waits while the panel has unsaved changes. It is not on the Google Ads, Microsoft Ads and X panels. You can send 10 test events an hour for each platform; after that the panel says "At most 10 test events an hour for each integration. Try again later." A test is not logged as a delivery and does not count in "Last 30 days".
Send purchases to Microsoft Advertising
Section titled Send purchases to Microsoft AdvertisingMicrosoft Advertising fetches a file from us instead of receiving events. When you turn on the Microsoft Ads panel and save for the first time, the panel shows the file's whole address once, under "Copy this address now". Copy it with the copy button into a schedule in Microsoft Advertising, then select "I copied it". We cannot show it again: from then on the panel shows the address with its token hidden, as ********abcd, with "Last fetch" and "Rows in the last file". "Replace address…" makes a new address and the old one stops working at once; it asks you to type replace address first. Put the new address in the schedule, or the file stops updating. Send purchases to Microsoft Advertising has the schedule steps.
Connect ad accounts and add spend
Section titled Connect ad accounts and add spendThe "Ad spend" section reads what you spend on Google Ads, Meta Ads, TikTok Ads, Microsoft Ads and Reddit Ads, and takes spend you type in for any other channel. Return on ad spend, CAC and ROAS are in Analytics, not here. Connect ad accounts and see what ads return explains how orders are matched to a platform and how those figures are worked out.
You need an account on the platform that can open the ad account. We ask only for the right to read cost, clicks, impressions and conversions, and we never change a campaign or a budget. A platform that shows "Not set up" cannot be connected until Coritan adds its sign-in app: the row says "Not set up on this platform yet. Ask Coritan support."
Connect a platform
Section titled Connect a platform- Open Settings › Marketing and find "Platforms" under "Ad spend". It has one row for each platform, with its status, how many accounts we read and when we last read one.
- Select "Connect" on the platform's row. The window goes to the platform's own sign-in page. Sign in with the account that can see your ad accounts and allow access. The link works for 15 minutes.
- The platform sends you back to Settings › Marketing. A green note says "Connected. Pick the accounts to read." If the sign-in failed, a red note says "did not connect" with the platform's reason; select "Dismiss" and try again.
- In the platform's accounts panel, such as "Google Ads accounts", tick the accounts that belong to your brand and select "Save accounts". A sign-in to a manager account can list accounts that are not yours, so pick only your own. You can pick up to 50 accounts for one platform. The footer says how many are picked and "Unsaved changes" until you save.
You have finished when the row reads "Connected" with a count such as "2 of 3 read", and each picked account shows "Last read", "History read back to" a date and its spend for 30 days. We read each picked account every 15 minutes for the last 3 days and once a night for the last 35 days, and a new account reads 13 months of history first.
Read what each status means
Section titled Read what each status means- "Connected": we read your accounts.
- "Pick accounts": you signed in but picked no account yet. Select "Pick accounts".
- "Failing": an account has had errors and no good read for an hour. The account's own line shows the error. Select "Sync now" on it to try again, and select "Reconnect" if it keeps failing.
- "Sign in again": the platform ended the sign-in, so nothing is read until you select "Reconnect". The row warns when a sign-in ends within 14 days.
- "Not connected": nothing is connected. Select "Connect".
- "Not set up": see above.
Sync an account now
Section titled Sync an account nowSelect "Sync now" on a picked account to read it again at once. The read runs in the background, and "Last read" updates within a minute or two. You can read one account 4 times an hour; the fifth time the toast says how long to wait, such as "You can read an account again at most 4 times an hour. Try again in about 1 hour." An account whose sign-in ended needs "Reconnect" first.
Disconnect
Section titled DisconnectSelect "Disconnect…" on an account, or "Disconnect…" in the ⋯ menu of a platform's row to remove every account of that platform. A dialog names what you are disconnecting. We delete the saved sign-in and stop reading, and the spend already read stays in your reports. Connect the platform again to read it again.
Add spend by hand
Section titled Add spend by hand"Manual spend" is for a channel with no connection, such as X, LinkedIn, Snapchat, Pinterest or Other, or a platform you have not connected.
- Choose the "Channel".
- Write what the spend was for under "What it was for", up to 120 characters.
- Check the "Currency" (three letters, such as USD) and type the "Amount" in whole units and decimals, such as
1250.50. The amount is the total for the days below, and we spread it evenly over them. - Choose the "First day" and the "Last day". One entry covers at most 400 days, and the last day can be at most 31 days ahead.
- Select "Add spend".
The entry joins the table with its channel, amount, days and a column "In reports". A toast says, for example, "X Ads spend added". A connected platform refuses an entry for its own channel, with "Google Ads is connected, so its spend is read from the platform." The same refusal comes for days we already read from a platform. If you connect a platform after you typed spend for it, those entries read "Ignored", because the platform's own numbers cover them. To remove an entry, select the bin on its row and confirm with "Remove entry"; reports stop counting it. An organization can keep 1,000 entries.
Set your search appearance
Section titled Set your search appearanceThe SEO tab of the settings page, /staff/settings?tab=seo, sets how your storefront appears in search results and on social cards. Its panels are "Search appearance" (the site name, the home page title and description, and the share picture), "Social profiles", "Verification" (the codes Google, Bing and Yandex ask for), "Robots" (extra blocked paths and "Hold indexing"), "Redirects" and "IndexNow". The first four share one "Save search settings" bar. Redirects, the IndexNow key and "Hold indexing" save as you act. Only an admin or the owner reads or changes it. Set how your storefront appears in search has every field, limit and check.
Manage API keys
Section titled Manage API keysThe developers tab, /staff/settings?tab=developers, lists every API key your organization has, including those created on coritan.com, and revokes them. You can create a key here with a label, a rate limit of 60–100,000 requests an hour (4,000 by default) and an allow-list of up to 50 addresses. We show the key once.
Note
A key made in the console has no scopes, so the Commerce API refuses it. Create a key that needs to work with the scopes it needs, as Create organization API keys shows.
Post a notice
Section titled Post a notice- Open
/staff/noticesand start a new notice. The address/staff/notices?new=1, and the "New notice" command in the console's search, open the form at once. - Choose its kind:
infofor something to know,maintenancefor planned work, orincidentfor something wrong now. - Write a title of up to 200 characters and, if you like, a body of up to 8,000.
- Choose where it shows: over your customers' dashboard, on your public status page, or both.
- Choose who sees it on the dashboard: everyone, paying customers or free customers.
- Set a start and an end if the notice belongs to a window.
- Publish it, or save it as a draft.
A paying customer has at least one service that is not on your free tier, and every other signed-in customer counts as free. Visitors who are not signed in see only notices for everyone. The status page is public, so the audience does not apply there. It lists maintenance and incident notices only, and keeps a resolved one for 24 hours.
A published notice shows from its start, or at once without one, until its end or until you resolve it. Each place shows up to 10 notices at a time.
Update and resolve a notice
Section titled Update and resolve a notice- Post an update to follow an incident:
investigating,identified,monitoring,updateorresolved, with up to 4,000 characters. Customers see the updates under the notice, newest first. An update on a draft publishes it, and aresolvedupdate resolves the notice. - Edit a notice to change its words, where it shows, its audience or its window.
- Resolve a notice to take it down. Reopening it puts it back up. Its updates stay on record.
- As an admin, delete a notice to remove it and its updates.
Change your own settings on My account
Section titled Change your own settings on My accountMy account is each member's own page, at /staff/me. Open it from your name at the foot of the sidebar, from your avatar in the top bar, or with g then m. Every setting on it belongs to you, and nobody else reads or changes it, so every role has all of them, Read-only included. A few need a higher role and say so beside the control.
A list of sections runs down the left, and tabs replace it on a phone. The section stays in the address as tab, such as /staff/me?tab=security.
| Section | What it holds |
|---|---|
| Profile | Your name, email, role and last sign-in. |
| Security | Your password, two-factor authentication, remembered browsers and sessions. |
| Notifications | Push notifications for your devices and the email digest. |
| Appearance | Table density and the shortcuts. |
| Saved views | Every view you saved. |
| Linked account | Your customer account on the storefront. |
Profile
Section titled ProfileThe "Profile" panel has a "Name" field of up to 200 characters. Customers see it on your ticket replies. Change it and choose "Save name". Under the field, the panel lists your email, your role, when you joined and your last sign-in, or "This is your first".
Security
Section titled SecurityThe "Security" section holds four panels: "Password", "Two-factor", "Remembered browsers" and "Sessions". Sign in to the staff console explains each of them: setting up two-factor authentication, remembering a browser and ending sessions.
Turn on push notifications
Section titled Turn on push notificationsPush notifications tell you about the work on a device you choose, with the console closed. They are news about a new ticket, a customer reply, a refund request, an order, a dispute or an abuse pattern. The bell holds fired alerts only, so push is where the rest reaches you.
What push needs
Section titled What push needs- Use Chrome, Edge, Firefox, or Safari 16 or later. A browser that cannot receive notifications says so in a note.
- On an iPhone or iPad, Apple allows notifications only for a site added to the Home Screen. Open the console in Safari, tap Share, choose Add to Home Screen, open the console from the Home Screen, sign in, and come back to this page. The note on the page says the same.
- Your brand needs a notification service. If it has none, the note says "This brand cannot send notifications yet."
Turn it on for this browser
Section titled Turn it on for this browser- Open My account and choose "Notifications".
- In the "Push notifications" panel, switch on "Notifications on this browser". The browser asks for permission. Allow it.
- The toast says "Notifications are on for this browser", and the browser is listed under "Your devices" with "This browser" beside it. If you said no, the note says "Notifications are blocked for this site in the browser". Allow them in the browser's settings for the site, then switch the setting on again.
- Under "What you are told about", switch on the kinds you want, as the table below lists.
- Choose "Send a test" under "Your devices" to check. It sends "Test notification" to every device you have, whatever the switches say, and the toast says how many took it, such as "Test sent to 1 of 1 device".
Do the same on your phone to get notifications there. To stop on one browser, switch off "Notifications on this browser". To remove another device, choose "Remove" on its row. A member keeps up to 10 devices, and adding another drops the oldest. A device the push service has lost is removed on its own.
| Switch | You are told when | Lowest role | On at the start |
|---|---|---|---|
| New tickets | A ticket arrives: "New ticket #1842: Server will not start". | Tier 1 support | Yes |
| Customer replies | A customer replies: "Alex replied to #1842". On a ticket assigned to someone, only that person is told. | Tier 1 support | Yes |
| Refund requests | A refund request arrives: "Refund request: $9.00 from Alex". | Tier 3 support | Yes |
| New orders | A paid invoice leaves services to build: "New order #12: $9.00". Free invoices and renewals send nothing. | Tier 3 support | No |
| Disputes opened | A dispute opens: "Dispute opened: $25.00". | Billing | Yes |
| Abuse patterns | A new abuse pattern waits for review: "Abuse pattern to review: example.com". | Tier 3 support | Yes |
| Alerts | An alert fires. The message is the alert's title. | Read-only | Yes |
A switch your role cannot read is dimmed and says what it needs, such as "Needs Tier 3 support or higher". When more than five events of one kind arrive together, one message stands for all of them, such as "7 new tickets". Selecting a message opens the console page it is about, in a console tab that is already open when there is one. We send each message once and do not retry it.
Get an email digest
Section titled Get an email digestThe email digest is one email with the day or the week in it. It holds the payments, refunds and net revenue, the new customers, orders and tickets, the median first reply, each against the period before, where the period's visits and orders came from, what needs attention, and the alerts that fired. It goes to billing, admin and owner members only, because it holds money figures.
- Open My account and choose "Notifications".
- In the "Email digest" panel, choose Off, Daily or "Weekly (Mondays)". A member below billing can choose Off only. The other two are dimmed, with "Needs billing or higher" beside them.
- Choose "Preview…" to see the email as it would arrive. The "Digest preview" drawer shows the last period that ended, with a Daily and a Weekly choice.
The panel says when it is sent, such as "Sent at 07:00 Europe/London". That is 07:00 in the time zone of your brand's settings. A daily digest comes every day and covers yesterday against the day before. A weekly digest comes on Monday and covers the Monday to Sunday that ended against the 7 days before. A digest you choose after 07:00 starts with the next send.
The "Acquisition" section follows the customers, orders and support figures. It shows the visits, sign-ups, paid orders and new customers of the period, the revenue in each currency (never added across currencies), and the three channels with the most orders, each against the period before. A paid order is an order that is not free and whose invoice is paid. The section is left out when your storefront had no visits and no orders in the period. Read the acquisition report explains the figures.
The alerts in the digest are the ones that fired in the period and went to the bell, which is the "In the bell" channel of an alert. Alerts you tested are left out. Set up alerts explains them.
Appearance
Section titled AppearanceThe "Density" panel offers Comfortable and Compact. Compact trims the padding of every table row, so more of a list fits on screen. It applies on this browser only. The "Shortcuts" panel lists the keys, with "All shortcuts" to open the full sheet. Once you hide the keyboard card on the Desk, a "Show the welcome card again" button appears here and brings it back. The staff console lists the shortcuts.
Saved views
Section titled Saved viewsThe "Saved views" panel lists the views you saved, with the list each one belongs to, whether it is shared with the team or only yours, whether it is pinned and when it changed. Choose "Open" to put a view on its list. The row's menu has "Rename…", "Pin" or "Unpin", and "Delete…", which asks you to confirm with "Delete view". To save a view, use the Views menu on a list, as The staff console explains.
Linked account
Section titled Linked accountThe "Your customer account" panel says which storefront account the console signs you in to, as Change a member's storefront account explains. It links to the storefront ("Open the storefront") and to your account as a customer ("See yourself as a customer"). When you have a storefront account and Tier 1 support or higher, the "Servers I can access" panel lists the customer servers that account is a subuser on, with "Open" and "Leave…". Answer customer conversations explains how a ticket adds a server there.
Result
Section titled ResultChanges take effect at once, and the audit log records each one with who made it, as Read the organization audit log explains. A changed error page goes out to our network straight away.
Troubleshooting
Section titled TroubleshootingUser is already a member- That email is on the team already. Change their role instead.
That email belongs to a suspended or closed platform account- The person's Coritan account is suspended or closed, so it cannot join a team. Invite another address, or ask them to contact Coritan support.
Set a temporary password or send an invite email- The email is new to Coritan, so the member needs a way to sign in. Send the invitation or set a temporary password.
That account already has a password, and joining a team does not change it. Leave the password out, or reset it from the member's row.- The person already has a Coritan account with its own password. Choose to email them a link instead; they sign in with the password they have.
This member's account has a password of its own. Send them a reset link instead; only they can choose a new one.- Only an account your invitation made, which nobody has claimed yet, takes a temporary password. Send a password link.
Use transfer-ownership to assign owner- You chose the owner role. Only Coritan support transfers ownership.
The owner's role moves only through transfer-ownership- The owner's membership does not change from the console. The same goes for
The owner cannot be removed; transfer ownership firstandThe owner's second factor is not reset from here. Contact support to transfer ownership. Ask another admin to change your own role- Admins cannot change their own role or remove themselves (
You cannot remove yourself). Another admin has to do it. Turn off your own two-factor from My account- You tried to reset your own second factor. Turn it off on
/staff/mewith a current code instead. Turn on your own two-factor before requiring it of the team- Set up your own two-factor authentication, then turn on the rule.
Only an active customer account can be attached- The account is suspended, banned or closed. Pick another account, or reactivate this one first.
That customer account already belongs to another team member- One account belongs to one member. Detach it from the other member first.
A customer account with their email already exists; attach that one instead- Choose to attach an existing account, and pick the one with their email.
Invalid or expired reset token- The link is more than 2 hours old, or a newer link replaced it. Send the member a new password link.
429withrate_limited- You added 20 members, or sent 10 test emails, in the last hour. Wait the number of seconds in
Retry-After. Admin access required- The task needs an owner or admin. Notices need Tier 3 support or above, and a lower role gets
Support access required. Unknown timezone- Use a time zone name from the IANA database, such as
Europe/LondonorAmerica/New_York. Currency CHF is not enabled on the platform- Choose a currency Coritan has enabled, or contact support to ask for another.
The invoice prefix is letters, digits, - and _ only- Remove spaces and other characters from the prefix.
Unknown feature switch: invoices- Only the five switches in Turn features on or off exist.
The brand's mail server did not accept the test email- Check how your email leaves, as Change organization settings explains, then send the test again.
The notice must end after it starts- Move the end after the start, or clear one of them.
- The notice does not show on the status page
- The status page lists maintenance and incident notices only. Show an
infonotice on the dashboard. - The "Notifications on this browser" switch is off and cannot be turned on
- Read the note under it. The browser cannot receive notifications, or it blocks them for this site, or your brand cannot send them yet, or you are on an iPhone or iPad and have not added the console to the Home Screen.
Turn on notifications on a device first- You chose "Send a test" with no device saved. Switch on "Notifications on this browser" first.
429withrate_limitedafter "Send a test"- Each member may send 10 test notifications an hour. Wait the number of seconds in
Retry-After. Meta pixel id must be 8 to 20 digits(or a similar sentence about another platform's ID)- The value under that field does not match what the platform issues. Copy it again from the platform, as Set up each platform shows.
Set the Pixel ID before turning Meta Conversions API on.- A platform needs its required settings, and its secret where it takes one, before "Send conversions" can be on. The sentence names the one that is missing.
At most 10 test events an hour for each integration. Try again later.- You sent 10 test events to that platform in the last hour. Wait, or read the platform's own test view for the events already sent.
<Platform> cannot be connected yet. Its app credentials have not been added to this platform.- Coritan has not set up that platform's sign-in app. The row reads "Not set up". Ask Coritan support.
You can read an account again at most 4 times an hour.- Each account allows 4 reads an hour from "Sync now". The toast says how long to wait. The scheduled reads are not counted.
Digests hold money figures. Billing and up can receive them.- Only billing, admin and owner members can choose a daily or weekly digest and preview one. Any member can choose Off.
- The weekly digest has not come
- It comes on Monday at 07:00 in your brand's time zone, and covers the week before. A digest chosen after 07:00 starts with the next send.
Related
Section titled Related- Manage members and roles
- Organization roles and permissions
- Change organization settings
- Add analytics and ad tags to your storefront
- Send purchases to your ad platforms
- Connect ad accounts and see what ads return
- Create organization API keys
- Answer customer conversations
- Set up alerts
- Sign in to the staff console
With the API
Section titled With the APIThese routes live under https://api.coritan.com/api/v1/orgs/{org_slug}/staff/, and take a console session or a member's access token as The staff console explains. A step-up needs a console session. The reference lists them under Staff team, the assignee list, Settings in the staff console, API keys and Staff notices.
Read the team
Section titled Read the teamcurl https://api.coritan.com/api/v1/orgs/acme/staff/team/detail \
-H "Authorization: Bearer $STAFF_TOKEN"
The answer has members, each with id, role, email, name, last_staff_login_at, mfa_enabled, can_sign_in, is_me and customer_link, plus the roles you can assign, my_role and the policy with require_mfa and remember_device_days. GET /staff/team is the short list the inbox picks an assignee from: each member's user_id, member_id, email, name, role, can_sign_in and is_me.
Add and change members
Section titled Add and change memberscurl -X POST https://api.coritan.com/api/v1/orgs/acme/staff/team \
-H "Authorization: Bearer $STAFF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "alex@example.com", "name": "Alex Example", "role": "support_tier2"}'
The body takes email, name (up to 200 characters), role (support_tier1 when you leave it out), send_invite_email (true when you leave it out), password, customer_link (auto, existing, create or none) and customer_id for existing. It answers 201 with the member, created_user (whether the email was new to Coritan) and invite_sent. A password for an account that already has one of its own answers 409, and nothing changes. invite_sent does not confirm delivery: if no email arrives, send a password link.
The other routes act on one member, by the id in members:
| Route | Body | What it does |
|---|---|---|
PATCH /staff/team/{member_id} |
role |
Changes the role and answers id, user_id and role. |
DELETE /staff/team/{member_id} |
None | Removes the member. |
POST /staff/team/{member_id}/revoke-sessions |
None | Signs the member out, forgets their remembered devices and answers how many sessions ended in revoked. Needs a step-up. |
POST /staff/team/{member_id}/reset-password |
send_email (true when you leave it out), password |
Sends a link, sets a password, or both, and answers link_sent. A password for an account with a password of its own answers 409. |
POST /staff/team/{member_id}/reset-mfa |
None | Removes the second factor, forgets the member's remembered devices and answers had_mfa and sessions_ended. |
GET /staff/team/{member_id}/customer-link |
None | Answers the storefront account: mode (auto, linked or none), customer_id and customer. |
PUT /staff/team/{member_id}/customer-link |
mode, customer_id |
existing attaches customer_id, create makes an account with the member's email, auto goes back to the default and none detaches. |
DELETE /staff/team/{member_id}/customer-link |
None | Makes the member console-only. |
GET /staff/team/policy answers require_mfa and remember_device_days. PATCH sets either or both, as in {"require_mfa": true} or {"remember_device_days": 14}, and answers the whole policy. remember_device_days takes 0 to 90.
Change the settings
Section titled Change the settingscurl -X PATCH https://api.coritan.com/api/v1/orgs/acme/staff/settings \
-H "Authorization: Bearer $STAFF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"support_email": "support@example.com", "payment_terms_days": 14, "features": {"maintenance": true}}'
GET /staff/settings answers the fields in Change the brand's details by their names (company_name, legal_name, registration_number, tax_id, registered_address, country_code, support_email, billing_email, terms_url, privacy_url, logo_url, favicon_url, primary_color, secondary_color, invoice_prefix, invoice_footer, default_currency, tax_rate, payment_terms_days and timezone), with custom_domain, custom_domain_verified and the five features. PATCH takes any of them, and features as an object of switch names and true or false. It answers what changed, each field with from and to, and the new settings. A body with no fields answers 400 Nothing to change.
GET /staff/settings/support-desk answers tier1_claim_limit with the default_tier1_claim_limit, min and max. PATCH with {"tier1_claim_limit": 15} changes it.
Preview the error page and emails
Section titled Preview the error page and emailsGET /staff/settings/error-page answers the saved config, the brand defaults it falls back on, the effective page and the preview_host it names. PATCH takes enabled, heading, message, detail, logo_url, accent_color, support_url, support_label, updates_url, updates_label, theme, background_color, surface_color, text_color, radius, font and status_style. A field sent as null goes back to the default, and an unknown field answers 422. To see a page before you save it:
curl -X POST https://api.coritan.com/api/v1/orgs/acme/staff/settings/error-page/preview \
-H "Authorization: Bearer $STAFF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"error_page": {"heading": "We will be right back", "detail": "minimal", "theme": "dark"}, "status": 504}' \
-o preview.html
The answer is the page as HTML. Leave out error_page to preview the saved one.
GET /staff/settings/email-design answers the saved design, its defaults and the options each field takes. PATCH takes theme, accent_color, background_color, surface_color, text_color, radius, font, header, logo_url, footer_text, links (a list of label and url) and show_address, and null returns a field to the default. POST /staff/settings/email-design/preview with email_design and a sample (welcome, invoice, action or reply) answers the email as HTML. POST /staff/settings/email-design/test with the same body sends it to your own address and answers sent, to and sample.
Create and revoke keys
Section titled Create and revoke keysGET /staff/settings/api-keys lists every key with its label, permissions, rate_limit_per_hour, ip_whitelist, is_active, last_used_at and created_at. POST with label, rate_limit_per_hour and ip_whitelist answers 201 with the key in raw_key, and it takes no scopes. DELETE /staff/settings/api-keys/{key_id} revokes a key and answers {"ok": true}, or 404 API key not found.
Post notices and updates
Section titled Post notices and updatescurl -X POST https://api.coritan.com/api/v1/orgs/acme/staff/notices \
-H "Authorization: Bearer $STAFF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"kind": "maintenance", "title": "Network maintenance on Sunday", "placement": "both", "status": "live", "starts_at": "2026-10-04T01:00:00Z", "ends_at": "2026-10-04T02:00:00Z"}'
| Field | Values | Default |
|---|---|---|
kind |
info, maintenance or incident |
info |
title |
1–200 characters | Required |
body |
Up to 8,000 characters | None |
audience |
all, paying or free |
all |
placement |
dashboard, status or both |
dashboard |
status |
draft, live or resolved |
draft |
starts_at, ends_at |
Times in UTC | None |
Send times in UTC with a Z: we drop any other offset without converting the time. It answers 201 with the notice.
GET /staff/notices lists up to 200 notices, newest first, each with its updates and is_showing, which is true while customers can see it. status narrows the list to draft, live or resolved. PATCH /staff/notices/{notice_id} takes the same fields, plus clear_starts_at and clear_ends_at to remove a start or an end. POST /staff/notices/{notice_id}/updates with state and body posts an update and answers 201. DELETE /staff/notices/{notice_id} deletes the notice.
Save a browser for push notifications
Section titled Save a browser for push notificationsThe routes under /staff/push/ belong to the member who calls them: a member reads, changes and deletes only their own devices and settings, and a Read-only member may use all of them. A call with no member behind it, such as an API key, answers 403. The reference lists them under Staff push.
GET /staff/push/config answers supported and public_key. A browser subscribes with that key. supported is false, and public_key is null, when your brand's console has no notification worker. Then save the subscription the browser makes:
curl -X POST https://api.coritan.com/api/v1/orgs/acme/staff/push/subscriptions \
-H "Authorization: Bearer $STAFF_TOKEN" \
-H "Content-Type: application/json" \
-d '{"endpoint": "https://push.example.net/send/abc123", "p256dh": "BNc...", "auth": "k8J..."}'
endpoint is the push service address the browser gave the subscription, up to 1,024 characters, over https and on a push service we allow. p256dh and auth are the browser's keys in base64url. user_agent is read from the request when you leave it out. A new browser answers 201. Sending the same browser again updates its keys and answers 200 with the same device. An address we do not accept answers 422.
| Route | What it does |
|---|---|
GET /staff/push/subscriptions |
Your devices, oldest first, each with id, label (such as Safari on iPhone), created_at and last_sent_at. |
DELETE /staff/push/subscriptions/{subscription_id} |
Stops notifications to one of your devices. Another member's device answers 404. |
GET /staff/push/preferences |
The kinds of event, each with kind, label, enabled, allowed and reason. |
PUT /staff/push/preferences |
Turns kinds on or off with a body such as {"kinds": {"order_placed": true}}, and answers the same list. A kind you leave out keeps its setting. |
POST /staff/push/test |
Sends "Test notification" to every device of yours, whatever the kinds say. It answers devices and sent. |
A member keeps up to 10 devices, and saving another drops the oldest. The kinds are ticket_new, ticket_reply, refund_requested, order_placed, dispute_opened, abuse_pattern and alert_fired, and order_placed is off until you turn it on. A kind your role cannot read has allowed set to false, enabled set to false and, in reason, the role it needs, such as Needs Tier 3 support or higher. Turning one on answers 403 with that reason, and turning it off always works. An unknown kind answers 422 and names the kinds there are. POST /staff/push/test answers 409 when you have no device and 429 after 10 tests an hour.
A message is title, body, url (an address on your brand's own host) and tag. Messages with the same tag replace each other on a device.
Choose an email digest
Section titled Choose an email digestGET /staff/digest answers the digest you get:
{
"kind": "daily",
"can_receive": true,
"reason": null,
"send_time": "07:00",
"timezone": "Europe/London",
"weekly_day": "Monday"
}
kind is off, daily or weekly. can_receive is false below billing, and reason then says who can. PUT /staff/digest with {"kind": "weekly"} chooses one and answers the same shape. Any member can choose off. Choosing daily or weekly below billing answers 403 with Digests hold money figures. Billing and up can receive them. A member with no row on the team, such as an API key, answers 409.
GET /staff/digest/preview?kind=daily answers the email the member would get as an HTML page, built from the last period that ended: yesterday for daily, or the last whole week from Monday to Sunday for weekly. It needs billing or higher, answers 403 below that, and takes 30 previews an hour. The page carries a sandbox policy and is never cached, so show it in a sandboxed frame.