# Easerix Docs — full corpus > Documentation for Easerix — the unified business suite: tasks, notes, e-signature, time tracking, short links, and forms on one platform with one login. # Getting started Create an Easerix account, set up your workspace, and start using the tools — solo or with a team. Canonical: https://easerix.com/docs/getting-started Sign up once and every Easerix tool is yours: you get a personal workspace automatically, and you can create an organization and invite your team whenever you're ready. There is no separate setup per tool — one login, one workspace, tools enabled per organization. ## Create your account 1. Go to [login.easerix.com](https://login.easerix.com) and sign up with your email — password or magic link, your choice. 2. You land in the Easerix app with a **personal workspace** already created. Nothing to configure. 3. Open any tool from the launcher. Your work is private to you until you share it. ## Work with a team Solo first is the default — organizations are an upgrade, never a prerequisite. 1. Open [account.easerix.com](https://account.easerix.com) and choose **Create organization**. 2. Invite people by email, or share an invite link. 3. Assign roles: **owner**, **admin**, **billing**, or **member**. Admins can create **teams** inside the organization for finer grouping. 4. Control which tools the organization uses under **Tools** — every tool is on by default; switch off what you don't need. Switching between your personal workspace and organizations happens from the workspace switcher — your personal space never goes away. ## Where everything lives | Surface | URL | |---|---| | The app (all tools) | [app.easerix.com](https://app.easerix.com) | | Account & organization settings | [account.easerix.com](https://account.easerix.com) | | Sign in | [login.easerix.com](https://login.easerix.com) | ## Frequently asked questions ### Do I need a company account to use Easerix? No. Every account starts with a personal workspace that works exactly like an organization of one. Create an organization only when you want to share work. ### Can I belong to more than one organization? Yes. Accounts support multiple organization memberships, and you switch between them (and your personal workspace) without signing out. ### How does my team sign in? Everyone signs in once at login.easerix.com; that session works across every Easerix tool — there are no per-tool logins. # CronCrunch FAQ Quick answers about timers, entries, billing, teams, preferences, and privacy in CronCrunch. Canonical: https://easerix.com/docs/croncrunch/faq The short version: one timer at a time, entries are always editable and always yours, billable amounts come from each project's hourly rate, rounding is display-only, sharing a project shares the project and never your entries, and monitoring records nothing unless you switch it on. Details below. ## Timers and entries ### What happens if I forget to stop the timer? It keeps running until you stop it — and a timer that runs unusually long can trigger a reminder notification. After stopping, just edit the entry's duration to the real figure. ### Can I edit an entry after the fact? Yes — everything: description, project, duration, billable flag, and tags. Edit inline on **Time entries**, click an entry on the **Calendar**, or retype a cell on the **Timesheet**. ### How do I enter durations? Three formats work everywhere: `1:30` (hours:minutes), `90` (minutes), and `1.5` (decimal hours) — all three mean ninety minutes. ### Can I log time for a past day? Yes. Drag it onto the right day in the **Calendar**, or type into that day's cell on the **Timesheet**. ## Billing ### Where does the "Amount" in reports come from? Billable hours × the **hourly rate** on each entry's project, shown in your chosen currency. Entries can be marked non-billable individually, and whole projects can be non-billable. ### Does rounding change my data? No. **Settings → Preferences → Rounding** affects how reports display durations (nearest 5–30 minutes). Entries always keep exact times, and exports reflect the stored data. ### How do I invoice from CronCrunch? Use **Reports → Export CSV** for the period — it includes date, times, project, client, description, tags, hours, and the billable flag per entry. ## Teams ### Can my team track time on the same project? Yes — **Share** the project from its card on **Projects**. Teammates then see it and log their own hours against it. ### Can I see a teammate's hours? No. Time entries are personal; a shared project shares the project definition, not anyone's entries. The **Everyone / Mine / Shared** lens on Projects filters projects, not people's time. ## Preferences ### Can weeks start on Sunday? Yes — **Settings → Preferences → Week starts on** switches between Monday and Sunday, and the Timesheet, Calendar, and weekly reports all follow it. ### Which currencies are supported? USD, EUR, GBP, CAD, AUD, and NGN, as a display preference in **Settings → Preferences**. ## Privacy ### Is CronCrunch watching what I do? Not unless you switch it on. Activity and screenshot capture are off by default, per-user, server-enforced, and viewable only by you. The full, plain-language accounting is on the [Monitoring page](/croncrunch/monitoring). ## Where things run | Surface | URL | |---|---| | CronCrunch | [app.easerix.com](https://app.easerix.com) → CronCrunch | | Account & organization settings | [account.easerix.com](https://account.easerix.com) | # CronCrunch Time tracking — clients, projects with budgets, a running timer, timesheets, a week calendar, tags, reports, and opt-in monitoring. Canonical: https://easerix.com/docs/croncrunch CronCrunch is Easerix's time-tracking tool: organize work into clients and projects, track with a live timer or log time by hand, fill a weekly timesheet or drag entries onto a calendar, tag and bill entries, and read reports of where your hours went and what they earned. Monitoring is strictly opt-in. ## What you can do | Capability | In short | |---|---| | Timer | One running timer — start on a project, stop when done | | Time entries | Manual logging, inline editing, billable flag, delete | | Tags | Label entries, create tags inline, filter by tag | | Timesheet | Week grid per project — type hours straight into cells | | Calendar | Week timeline — drag on empty space to log time | | Clients & projects | Projects belong to clients, carry a color, hourly rate, and budget | | Budgets | Per-project hour budgets with progress bars and over-budget warnings | | Reports | Totals, billable amount, by-project/by-client and by-day breakdowns, CSV export | | Shared projects | Share a project so teammates can log their own hours against it | | Monitoring | Opt-in activity timeline and screenshots from the desktop app — [read the details](/croncrunch/monitoring) | ## How it fits together **Clients → projects → time entries.** A client is who you bill; a project is what you track against (with its rate, budget, and color); a time entry is a stretch of tracked or logged time on a project. Everything else — timesheet, calendar, reports — is a different lens on the same entries. Your entries are yours: sharing a project lets teammates log *their own* hours against it, and never exposes anyone's entries to anyone else. ## Next steps - [Track your first hour](/croncrunch/quickstart) - [Timesheets, tags, budgets, and reports](/croncrunch/timesheets-and-reports) - [Monitoring — what it records and who sees it](/croncrunch/monitoring) ## Frequently asked questions ### Where do I open CronCrunch? In the Easerix app at [app.easerix.com](https://app.easerix.com) — CronCrunch is one of the tools in the launcher. ### Can I run two timers at once? No — there is exactly one running timer. Starting work on something else means stopping the current timer first, which keeps entries honest. ### Is anything recorded without my say-so? No. Activity and screenshot capture are off by default, per-user, and the server refuses captures for any account that hasn't switched them on. The full picture is on the [Monitoring page](/croncrunch/monitoring). # Monitoring — what is recorded, and who sees it A plain accounting of CronCrunch's opt-in activity and screenshot capture — what's collected, when, who can view it, and how to turn it off. Canonical: https://easerix.com/docs/croncrunch/monitoring Monitoring is off by default and strictly opt-in, per person. When you enable it, the CronCrunch desktop app can record which app and window title you have focused, and take periodic screenshots. Only you can view your captures — there is no manager or team view — and you can turn it off any time. This page states exactly what monitoring does, based on how the product is built — not on what a sales page would like it to do. ## What is captured Two independent channels, each with its own toggle on the **Monitoring** page: | Channel | Exactly what's stored | |---|---| | **Record active app & window title** | The focused app's name, its window title, and the start/end time of that focus — nothing else | | **Take periodic screenshots** | A screenshot image (up to 5 MB) and the time it was captured | Either capture can be linked to the time entry it happened during, so it shows up in context. **And what is not.** CronCrunch has no way to receive keystrokes, mouse movement, webcam or microphone recordings, or browsing history — the service simply has no endpoints for them. The two channels above are the entire surface. ## When capture happens - **Off by default, for everyone.** A brand-new account has both channels disabled. Monitoring only starts if *you* switch it on. - **Enforced by the server, not just the app.** When a channel is off for your account, the CronCrunch service rejects any capture sent for it. It's not a client-side setting that software could quietly ignore — the toggles are the enforcement boundary. - **Capture comes from the desktop app.** The web app at app.easerix.com never records anything; it only shows your settings and what has been captured. To capture at all you need the CronCrunch desktop app running and signed in as you. - **Screenshots run at the interval you choose** — every 2, 5, 10, or 15 minutes (5 by default). - **Your consent is timestamped.** The first time you enable either channel, the moment is recorded and shown on the Monitoring page ("Consent recorded …"). ## Who can view it **Only you.** Every screenshot and activity event is stored against your own account, and every way of viewing them returns only your own. There is no manager view, no admin view, no teammate view, and no organization-wide export — those capabilities do not exist in the product today. Sharing a project with your organization changes nothing here: shared projects let teammates log their own hours; they never expose your entries, your activity, or your screenshots. Screenshot images live in private storage and are displayed through links that expire after ten minutes — there is no permanent public URL to a screenshot. ## How to turn it off — and what happens to the data 1. Open **Monitoring** in the CronCrunch sidebar. 2. Switch off either toggle (or both). From that moment the server rejects new captures on that channel. For data that already exists: | Data | Deleting it | |---|---| | Screenshots | Delete any screenshot individually from the Monitoring page — this removes both the record and the stored image, and cannot be undone | | Activity events | There is currently **no way to delete individual activity events** in the app. Turning the toggle off stops new recording, but past events remain visible on your timeline | ## Reviewing your own captures The **Monitoring** page shows your last 7 days in two tabs: - **Screenshots** — thumbnails grouped by day, each with its capture time and a delete button. - **Activity** — a per-day list of app + window title with the time and duration of each focus stretch. ## Frequently asked questions ### Can my employer require this and see my screen? CronCrunch has no mechanism for that today. The settings are per-user and self-service, and captures are only viewable by the person they belong to. There is no admin override and no manager dashboard. ### Does monitoring only run while my timer is running? The in-app description says the desktop app records only while your timer runs, with a visible indicator. What the server enforces is your toggles: with a channel enabled, it accepts that channel's captures regardless of timer state. Treat the toggles — not the timer — as the on/off switch that actually binds. ### If I delete a screenshot, is the image really gone? Yes — deleting removes the database record and the stored image file. The Monitoring page asks for confirmation because it cannot be undone. ### Is anything captured from this web page or my browser? No. Capture requires the desktop app. The web app only reads and manages what was captured. # Track your first hour Client → project → timer — from zero to tracked time in two minutes. Canonical: https://easerix.com/docs/croncrunch/quickstart Create a client, create a project under it with an hourly rate, then start the timer on that project and stop it when you're done. The entry lands in Time entries, the Timesheet, the Calendar, and Reports automatically — one recording, every view. ## Steps 1. Open **CronCrunch** in the Easerix app ([app.easerix.com](https://app.easerix.com)). 2. **Add a client** (optional but recommended): go to **Clients**, choose **New client**, name it, pick a color, and **Create**. 3. **Create a project**: go to **Projects**, choose **New project**, and fill in: | Field | Notes | |---|---| | Name | e.g. "Brand redesign" | | Client | pick one, or "No client" | | Hourly rate ($) | used for billable amounts in reports | | Budget (hours, optional) | shows a progress bar on the project card | | Color | how the project appears everywhere | 4. **Start tracking**: go to **Timer**, pick the project, describe what you're doing, and hit **Start timer**. The elapsed clock runs front and center. 5. **Stop timer** when you're done. The entry appears in the **Today** list under the timer. ## Prefer logging after the fact? On **Time entries**, use the quick-add bar: pick a project, describe the work, type a duration, and hit **Log**. Durations are forgiving — `1:30`, `90`, and `1.5` all mean ninety minutes. ## Verify it works Open **Reports** — your time shows under **Total tracked**, attributed to the project (and its billable amount if the project has a rate). The **Timesheet** and **Calendar** show the same entry in their week views. ## Good to know - The timer needs at least one project to exist — that's why the project comes first. - Entries are editable after the fact: description, project, duration, billable flag, and tags. - A forgotten timer that runs unusually long can trigger a reminder notification so it doesn't quietly eat your day. # Timesheets, tags, budgets, and reports The week grid, the drag-to-create calendar, entry tags, project budgets, and reading and exporting reports. Canonical: https://easerix.com/docs/croncrunch/timesheets-and-reports CronCrunch gives you three ways to work a week — a timesheet grid where you type hours per project per day, a calendar where you drag to log time, and the entries log itself. Tags slice entries across projects, budgets track project burn, and Reports totals it all with CSV export. ## The timesheet: type your week **Timesheet** shows a week as a grid — one row per project, one column per day, cells in `h:mm`. 1. Click any cell and type a duration (`1:30`, `90`, or `1.5` all work), then press **Enter**. 2. Typing *more* than the cell holds logs the difference as a new entry that day; typing *less* trims the most recent entries down (deleting emptied ones). 3. Use **Add project row…** to bring a project without entries into the grid. 4. Arrows move between weeks; **This week** jumps back to now. Row, column, and week totals update as you go. Whether the week starts on Monday or Sunday is yours to set in **Settings → Preferences**. ## The calendar: drag your week **Calendar** shows the same week as a timeline — one column per day, hours down the side, a line marking "now". - **Drag on empty space** to draw an entry; it snaps to 15 minutes and shows the time range while you drag. Release, pick the project, describe it, and **Log time**. - **Click an entry** to edit its project and description, or delete it. - Overlapping entries sit side by side instead of hiding each other. ## Tags Tags label entries across projects — "deep work", "meetings", "support". - Edit any entry on **Time entries** and toggle tag chips on it; type into **+ new tag** to create one on the spot. - Filter the whole log by tag with the **All tags** dropdown. - Tags ride along into the CSV export. ## Project budgets Give a project a **Budget (hours)** when creating or editing it, and its card on **Projects** shows tracked-vs-budget with a progress bar — e.g. *12h of 40h · 30%*. Go past the budget and the bar turns red with an **Over budget** label. Budgets are informational: nothing blocks you from logging past them. ## Reports **Reports** answers "where did the hours go, and what did they earn": | Element | What it shows | |---|---| | Range tabs | This week, Last week, This month, Last month, All time, Custom | | **Total tracked** | all hours in the range | | **Billable** | hours on billable entries | | **Amount** | billable hours × each project's hourly rate, in your currency | | **By project / client** | share of time per project or per client, with bars | | **By day** | a bar per day, quiet days shown as gaps | **Export CSV** downloads every entry in the range — date, times, project, client, description, tags, duration, hours, and billable flag — ready for invoicing or a spreadsheet. ### Rounding **Settings → Preferences → Rounding** rounds durations on reports to the nearest 5–30 minutes, *display only* — entries always keep their exact time, and the report says so when rounding is on. ## Frequently asked questions ### Do the timesheet, calendar, and entries log show different data? No — they're three views of the same entries. Log time in any of them and it appears in all of them, and in Reports. ### What does sharing a project do? **Share** on a project card makes it visible to your organization so teammates can log *their own* hours against it. It never exposes your entries — time entries are always personal. **Make private** reverses it. ### Which currency do amounts use? The one you pick in **Settings → Preferences → Currency** (USD, EUR, GBP, CAD, AUD, NGN). It changes display only — rates stay as entered. # CLI The easerix command line — tasks and links from your terminal, with device-code sign-in or an API key for CI. Canonical: https://easerix.com/docs/developers/cli `easerix` is a command-line client for your Easerix workspace: sign in once with a device code, then list and create tasks and short links from the terminal, with JSON output for scripting. In CI and other headless environments, set `EASERIX_API_KEY` instead of signing in. ## Availability The CLI currently ships to teams through GitHub releases on the private Easerix repository — there's no public Homebrew tap or npm package yet. If your team has repository access, install with an authenticated [GitHub CLI](https://cli.github.com): ```bash bash <(gh api repos/perizerlabs/easerix/contents/cli/install.sh --jq '.content' | base64 -d) ``` This downloads the latest release binary for your OS/architecture and installs it to `/usr/local/bin` (override with `EASERIX_INSTALL_DIR`). ## Sign in ```bash easerix login ``` The CLI uses a device-code flow — the same experience as `gh auth login`, so it works over SSH and inside containers. It prints a code like `ESRX-XXXX-XXXX`, opens the approval page in your browser (use `--no-browser` to just print the URL), and finishes once you approve. Approval grants the CLI **one workspace**; to switch workspaces, run `easerix login` again. `easerix logout` signs out on this machine only. To revoke the connection entirely: **account.easerix.com → Connected apps**. Credentials are stored in your OS keychain when available, otherwise in `~/.config/easerix/` (set `EASERIX_NO_KEYRING=1` to force file storage — `easerix context` shows which backend is active). ## Commands | Command | What it does | |---|---| | `easerix login [--no-browser]` | Sign in with a device code | | `easerix logout` | Sign out on this machine | | `easerix whoami` | Who you're signed in as, workspace, role, tools | | `easerix context` | Active configuration and where each value came from | | `easerix orgs list` | List every workspace you belong to | | `easerix tasks teams` | List the workspace's teams | | `easerix tasks issues [--team ]` | List issues, optionally one team's | | `easerix tasks create [--team <key>]` | Create an issue | | `easerix links list` | List your short links | | `easerix links create <url> [--title <t>]` | Create a tracked short link | Every listing command takes `-o table` (default), `-o json`, or `-o plain`. Exit codes: `0` success, `1` error, `2` cancelled, `4` authentication needed. ## Headless use: `EASERIX_API_KEY` Set `EASERIX_API_KEY` to an [API key](/developers/overview#api-keys) and the CLI skips the stored session entirely — it exchanges the key for a short-lived access token automatically and re-exchanges as needed. Nothing is written to disk, which makes it the right mode for CI: ```bash EASERIX_API_KEY=esrx_o_... easerix links create https://example.com/launch -o json ``` Other environment variables: | Variable | Purpose | |---|---| | `EASERIX_API_KEY` | Headless credential — takes precedence over any stored session | | `EASERIX_NO_KEYRING` | Store tokens in files instead of the OS keychain | | `EASERIX_AUTH_URL` | Override the auth server (defaults to `https://auth.easerix.com`) | ## Frequently asked questions ### Can I use the CLI in a container or over SSH? Yes — that's what the device-code login is for. Run `easerix login --no-browser`, open the printed URL on any machine, and enter the code. Or skip login entirely with `EASERIX_API_KEY`. ### How do I script against the output? Pass `-o json` and pipe to `jq`. `-o plain` gives tab-separated values for shell tools. ### Which tools does the CLI cover? Tasks and Links today, plus account commands (`whoami`, `orgs`, `context`). For everything else, use the [REST APIs](/developers/api) directly. # MCP server Connect Claude and other AI clients to your Easerix workspace at mcp.easerix.com. Canonical: https://easerix.com/docs/developers/mcp <Answer label="What the MCP server does"> Easerix runs a hosted MCP server at **mcp.easerix.com**. Add it to Claude or any MCP-compliant AI client, approve it once in your browser, and the AI can act on your workspace — create issues and short links, pull analytics, check documents, log CRM activity — limited to the tools your workspace has enabled. </Answer> MCP (Model Context Protocol) is an open standard that lets AI assistants call tools on external services — the Easerix MCP server is how an AI client gets hands on your workspace. ## Add it to Claude **claude.ai / Claude Desktop** — Settings → Connectors → Add custom connector, with the URL: ``` https://mcp.easerix.com/mcp ``` **Claude Code** — one command: ```bash claude mcp add --transport http easerix https://mcp.easerix.com/mcp ``` Any other MCP client that supports streamable HTTP and OAuth works the same way — point it at `https://mcp.easerix.com/mcp`. ## Signing in happens automatically The server is an OAuth 2.1 resource server, and compliant clients handle the whole flow on their own: on first use the client discovers `auth.easerix.com`, registers itself, and opens your browser to approve the connection. You pick **one workspace** to grant — everything the AI does is scoped to it. To switch workspaces, disconnect and connect again. Revoke a connection anytime under **account.easerix.com → Connected apps**. ## Available tools Tools are gated by workspace access: a tool group only appears if that Easerix tool is enabled for the granted workspace. `whoami` is always available and tells the AI who it's acting as, in which workspace, with which tools. ### Tasks | Tool | What it does | |---|---| | `tasks_list_teams` | List the workspace's Tasks teams | | `tasks_list_issues` | List issues, optionally for one team | | `tasks_create_issue` | Create an issue in a team | ### Links | Tool | What it does | |---|---| | `links_create_short_link` | Create a tracked `esrx.ly` short link | | `links_list` | List short links with click counts | | `links_update_link` | Change destination, title, tags, pause, or archive | | `links_delete_link` | Delete a link and its click history | | `links_link_stats` | Per-link analytics: clicks, countries, devices, referrers, conversions | | `links_batch` | Pause, activate, archive, or delete up to 100 links at once | | `links_list_bio_pages` | List link-in-bio pages | | `links_update_bio_page` | Edit a bio page's content or publish state | | `links_analytics_summary` | Account-wide link analytics | ### Sign | Tool | What it does | |---|---| | `sign_list_documents` | List documents with signature status | ### CronCrunch | Tool | What it does | |---|---| | `croncrunch_time_summary` | Tracked-time summary by project and by day | ### CRM | Tool | What it does | |---|---| | `crm_pipeline_summary` | Pipeline stages with deal counts and value | | `crm_create_contact` | Create a contact | | `crm_create_company` | Create a company | | `crm_create_deal` | Open a deal in the default pipeline | | `crm_move_deal` | Move a deal to another stage | | `crm_log_activity` | Log a note, call, email, or meeting | ### Notes | Tool | What it does | |---|---| | `notes_search` | Full-text search your pages (titles + content) | | `notes_read_page` | Read a page's content as plain text | | `notes_create_page` | Create a page from Markdown | | `notes_append_to_page` | Append Markdown to an existing page | ### Forms | Tool | What it does | |---|---| | `forms_list_forms` | List your forms | | `forms_form_summary` | A form's settings, latest submissions, and 14-day series | The list grows as tools gain MCP surface — reconnect (or restart your client) to pick up new ones. ## Frequently asked questions ### Can the AI reach workspaces I didn't grant? No. The connection is scoped to the single workspace you approved. Data in other workspaces is invisible to it. ### Does the AI get more access than I have? No — it acts as you, with your role, and only in tools enabled for the workspace. ### My client asks for a client ID or secret — what do I enter? Nothing. The server supports dynamic client registration, so compliant clients register themselves. There is no shared client secret. # Developer overview Base URLs, API-key and OAuth 2.1 authentication, and the error shape shared by every Easerix API. Canonical: https://easerix.com/docs/developers/overview <Answer label="How the Easerix API works"> Every Easerix tool exposes a REST API, most of them under one domain at `api.easerix.com/<tool>`. You authenticate by exchanging an API key for a short-lived access token at `auth.easerix.com`, then send that token as a Bearer header. Every error response is a single JSON field: `{"error": "..."}`. </Answer> ## Base URLs | API | Base URL | Notes | |---|---|---| | Auth & accounts | `https://auth.easerix.com` | Token exchange, OAuth 2.1, workspaces | | Tasks | `https://api.easerix.com/tasks` | | | Notes | `https://api.easerix.com/notes` | | | Sign | `https://api.easerix.com/sign` | | | Links | `https://api.easerix.com/links` | Management API — short links themselves redirect on `esrx.ly` | | Forms | `https://f.easerix.com` | API and public form endpoints share the form domain | | CronCrunch | `https://api.easerix.com/croncrunch` | | | CRM | `https://api.easerix.com/crm` | | | Notifications | `https://notifications-api.easerix.com` | | | MCP | `https://mcp.easerix.com` | [MCP server](/developers/mcp) for AI clients | Older per-tool hosts of the form `<tool>-api.easerix.com` are retired — use the bases above. Endpoints are versioned under `/v1/`, so a full URL looks like `https://api.easerix.com/links/v1/links`. ## Authentication Easerix has two ways in: **API keys** for scripts, integrations, and CI, and **OAuth 2.1** for apps that act on behalf of a user (this is what the [MCP server](/developers/mcp) and the [CLI](/developers/cli) use). ### API keys Create keys at **account.easerix.com**: - **Personal keys** (`esrx_u_...`) — under **API keys**. The key acts as you, in one workspace you pick when creating it. - **Workspace keys** (`esrx_o_...`) — under your organization's **API keys** page (requires settings permission, team workspaces only). These are service accounts: they act as a role you choose — `member`, `billing`, or `admin`, never `owner`. Either kind can be restricted to specific tools and given an expiry (1 year by default, 90 days, or never). The full key is shown **once** at creation — store it in a secret manager. Revoke any key from the same page. ### Using a key: exchange it for an access token API keys are never sent to the tool APIs directly. Exchange the key for a short-lived access token first: ```bash curl -s https://auth.easerix.com/v1/auth/token \ -H "Content-Type: application/json" \ -d '{"api_key": "esrx_u_..."}' ``` ```json { "access_token": "<JWT>", "expires_at": "2026-08-09T18:04:05Z", "org": { "id": "...", "name": "...", "role": "member", "tools": ["links", "tasks"] } } ``` There is no refresh token — when `expires_at` passes, exchange the key again. Then call any tool API with the token: ```bash curl -s https://api.easerix.com/links/v1/links \ -H "Authorization: Bearer $ACCESS_TOKEN" ``` Sending the raw `esrx_...` key as a Bearer token to a tool API returns `401`. ### OAuth 2.1 `auth.easerix.com` is a standards-compliant OAuth 2.1 authorization server: | Endpoint | Purpose | |---|---| | `GET /.well-known/oauth-authorization-server` | Discovery metadata (RFC 8414) | | `POST /oauth/register` | Dynamic client registration (RFC 7591) — public PKCE clients | | `GET /oauth/authorize` | Authorization code flow — PKCE `S256` required | | `POST /oauth/token` | Token endpoint — authorization code, refresh token, and device code grants | | `POST /oauth/device/authorization` | Device authorization (RFC 8628) for terminals and headless devices | Registered clients are public (no client secret) and must use PKCE with `S256`. When a user approves your app they grant it **one workspace**; the tokens you receive are scoped to that workspace and to the tools enabled there. Users can revoke a grant anytime under **account.easerix.com → Connected apps**. MCP-compliant AI clients drive this whole flow automatically — see [MCP server](/developers/mcp). ## Errors Every non-2xx response has the same body — one human-readable field: ```json { "error": "missing bearer token" } ``` Status codes follow convention: `400` for invalid input, `401` for missing or expired credentials, `403` for a role or permission you don't have, `404` for anything that doesn't exist. Note that resources outside your workspace also read as `404`, never `403` — the API doesn't confirm the existence of things you can't access. ## Workspace scoping Every resource belongs to the workspace your token was issued for. A token carries the workspace, your role in it, and the tools enabled there; a request to a tool that isn't enabled for the workspace is rejected. To work across two workspaces, create a key (or grant) per workspace. ## Next steps - [Browse the API reference](/developers/api) — every endpoint, generated from the OpenAPI specs - [Connect an AI client over MCP](/developers/mcp) - [Receive webhooks](/developers/webhooks) ## Frequently asked questions ### How long do access tokens last? They're short-lived. Don't hardcode a duration — read `expires_at` from the exchange response and re-exchange your API key when it passes. ### Can I use one API key across all my workspaces? No. A key is bound to a single workspace at creation. Create one key per workspace you need to automate. ### Where do I find the OpenAPI specs? Each API's raw spec is linked from the [API reference](/developers/api) — for example [links.v1.yaml](/openapi/links). They're standard OpenAPI 3 YAML, ready for client generators. # Webhooks Signed outbound webhooks from Links and Sign, and email delivery for Forms submissions. Canonical: https://easerix.com/docs/developers/webhooks <Answer label="How Easerix webhooks work"> Links and Sign can POST JSON to your HTTPS endpoint when events happen — link clicks and conversions, document signatures and completions. Every delivery is signed with HMAC-SHA256 in an `X-Easerix-Signature` header so you can verify it came from Easerix. Forms delivers submissions to email destinations today. </Answer> ## Registering a webhook Links and Sign share the same registration API: ```bash curl -s https://api.easerix.com/links/v1/webhooks \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/hooks/easerix", "events": ["link.created", "link.clicked"]}' ``` The response includes the webhook and a signing `secret` (`whsec_...`) — shown **once**, so store it immediately. The URL must be HTTPS. Manage webhooks with `GET /v1/webhooks`, `PATCH /v1/webhooks/:id` (change `url`, `events`, or `active`), and `DELETE /v1/webhooks/:id`. | | Links | Sign | |---|---|---| | Base URL | `https://api.easerix.com/links` | `https://api.easerix.com/sign` | | Default events | `link.created`, `link.updated`, `link.deleted` | `*` (all events) | | Wildcard `*` subscription | No | Yes | | Test delivery | `POST /v1/webhooks/:id/test` sends a `ping` | Not available | | Webhooks per account | Unlimited | 10 | ## Verifying signatures Every delivery carries these headers: | Header | Value | |---|---| | `X-Easerix-Event` | The event name, e.g. `link.clicked` | | `X-Easerix-Signature` | `sha256=<hex HMAC-SHA256 of the raw request body>` | | `X-Easerix-Delivery` | Unique delivery ID, stable across retries (Links only) | Compute the HMAC of the **raw request body** with your `whsec_...` secret and compare: ```js import { createHmac, timingSafeEqual } from "node:crypto"; function verify(rawBody, header, secret) { const expected = "sha256=" + createHmac("sha256", secret).update(rawBody).digest("hex"); return timingSafeEqual(Buffer.from(header), Buffer.from(expected)); } ``` Reject anything that doesn't verify. On Links, use `X-Easerix-Delivery` to deduplicate retried deliveries. ## Links events The payload envelope is always: ```json { "event": "link.clicked", "at": "2026-08-09T17:30:00Z", "data": { ... } } ``` | Event | `data` contains | |---|---| | `link.created` / `link.updated` / `link.deleted` | `{id, shortCode, destinationUrl, title, active, archived}` | | `link.clicked` | `{link: {id, shortCode}, clicks, totalClicks}` | | `link.converted` | `{link: {id, shortCode}, conversion: {id, name, amountCents, currency}, clickId, clickedAt, convertedAt}` | `link.clicked` is **aggregated**: rapid clicks on the same link are batched into one event with a `clicks` count, so don't assume one event per click — `totalClicks` is the link's running total. ## Sign events Sign payloads are flat (no `data` wrapper): ```json { "event": "document.signed", "documentId": "doc_...", "document": { "id": "doc_...", "name": "MSA — Acme", "status": "in_progress" }, "occurredAt": "2026-08-09T17:30:00Z", "recipient": { "id": "...", "name": "...", "email": "...", "role": "signer", "status": "signed" } } ``` | Event | Fires when | |---|---| | `document.sent` | A document is sent for signature | | `document.viewed` | A recipient opens the document | | `document.signed` | A recipient signs | | `document.declined` | A recipient declines | | `document.completed` | Everyone has signed | | `document.voided` | The sender voids the document | | `document.expired` | The document passes its expiry | `recipient` is present only on the recipient-scoped events (`viewed`, `signed`, `declined`). ## Delivery and retries Both tools deliver with a 10-second timeout and treat any 2xx as success. A failed delivery is retried twice (Links waits ~1s then ~5s; Sign waits 5s then 20s). After **20 consecutive failures** a webhook is automatically disabled — re-enable it with `PATCH /v1/webhooks/:id {"active": true}`, which also resets the failure count. Respond quickly (queue the work, return `200` immediately) to stay under the timeout. ## Forms: email destinations Forms doesn't send outbound webhooks yet — **email is the delivery channel**. Each form has destinations managed at `https://f.easerix.com/v1/forms/:id/destinations`; an `email` destination with config `{"to": ["ops@example.com"]}` receives a branded notification for every non-spam submission, with `Reply-To` set to the submitter when their email is detected. Forms can also send an autoresponder to the submitter if you enable it on the form. To get form submissions into your own systems today, poll `GET /v1/forms/:id/submissions` on the [Forms API](/developers/api/forms). ## Frequently asked questions ### Are deliveries replayed in order? No ordering guarantee — treat each event independently and use the payload's timestamp (`at` / `occurredAt`) rather than arrival order. ### My endpoint was down — did I lose events? Each delivery is retried twice, then dropped. After 20 consecutive failures the webhook is disabled entirely, so re-enable it and reconcile via the REST API after an outage. ### Can I rotate the signing secret? Delete the webhook and create a new one — a fresh secret is generated and returned once on creation. # Email notifications Deliver each form submission to one or more inboxes, and send an automatic reply to the person who submitted. Canonical: https://easerix.com/docs/forms/destinations <Answer> Each form delivers submissions by email: add an email destination with one or more recipients, or use the simpler Target emails setting. Notification emails include every submitted field with Reply-To set to the submitter, and an optional autoresponder replies to the person who filled in the form. Spam is never delivered. </Answer> ## Add an email destination 1. Open the form in **Forms** ([app.easerix.com/forms](https://app.easerix.com/forms)) and scroll to **Where submissions go**. 2. On the **Email** card, choose **Add email destination**. 3. Enter one or more addresses in **Recipients** (comma-separated) and **Save**. 4. Every new non-spam submission is now emailed to those recipients. Each destination has a toggle to pause it without deleting it, and a trash button to remove it. A form can have several email destinations with different recipient lists. ## The quick alternative: Target emails Under **Settings → Notifications**, the **Target emails** field is a simpler way to say who gets emailed — it's also what the **Notify (emails)** field on the New form panel fills in. Target emails are used **only while the form has no enabled email destination**; once you add one, destinations take over. ## What the notification email contains - Subject: **New submission: [form name]**. - Every submitted field, listed key by key. - **Reply-To** set to the submitter's email address when one is present (the `email` field, or the first value that looks like an email) — so you can reply straight from your mail client. - A link to open the form in the Easerix app. Submissions also land in your Easerix notification feed (the bell in the app, and the mobile inbox), independent of email. ## Autoresponder Under **Settings → Autoresponder** you can send an automatic reply to the person who submitted: 1. Toggle **Enabled**. 2. Set a **Subject** (e.g. *We got your message*) and a **Body**. 3. Save. The reply goes to the submitter's email address whenever the submission contains one. ## What is never delivered - **Spam** — submissions flagged by any [spam mechanism](/forms/spam) trigger no notification and no autoresponder. - **Borderline submissions under AI review** — delivery waits for Claude's verdict and only goes out on a clean result, usually within seconds. ## More destinations The app lists **Webhook, Slack, Google Sheets, Zapier, and CRM** on the destinations panel — all marked **Coming soon**. Email is the delivered channel today. ## Frequently asked questions ### Can I send submissions to multiple people? Yes — put several comma-separated addresses in one destination's **Recipients**, or create multiple email destinations. ### Why didn't I get an email for a submission? Check three things: the submission wasn't flagged as spam (toggle **Show spam** in the inbox), the email destination is enabled (not paused), and — if the AI filter is on — the verdict wasn't still pending when you looked. Marking a spam submission as not-spam afterwards does not re-send the email. ### Can I reply directly to the person who submitted? Yes. Notification emails set **Reply-To** to the submitter's address whenever the submission includes one, so hitting Reply in your mail client goes to them, not to Forms. # Forms A form backend for any website — point your HTML form at an endpoint on f.easerix.com and manage submissions, spam, and email notifications. Canonical: https://easerix.com/docs/forms <Answer label="What is Easerix Forms"> Easerix Forms is a form backend: point any HTML form or `fetch()` call at a per-form endpoint on **f.easerix.com** and submissions land in an inbox with spam filtering, email notifications, and CSV export. No server code needed — Easerix's own contact form at easerix.com/contact runs on it. </Answer> ## What you can do | Capability | In short | |---|---| | Endpoints | One POST URL per form on `f.easerix.com` — plain HTML, `fetch()`, or any HTTP client | | Inbox | Submissions per form and across all forms, searchable, with CSV export | | Spam protection | Honeypot field, content filter, AI filter (Claude), Cloudflare Turnstile | | Email notifications | Deliver each submission to one or more inboxes | | Autoresponder | Automatic reply to the person who submitted | | Success behavior | JSON response or a redirect to your thank-you page | | Allowed origins | Restrict which sites may POST to a form (CORS) | | Projects | Group forms by website, each with a name and color | | Sharing | Share a form with your organization — teammates can read it and its inbox | | Pause | Paused forms stop accepting submissions; existing data is kept | ## How it fits together 1. **Projects** group forms — typically one project per website. 2. **Forms** are endpoints. Creating a form generates a short unique URL like `https://f.easerix.com/a3kx9p`. 3. **Submissions** arrive at the endpoint, pass through the spam pipeline, and land in the form's inbox. 4. **Destinations** deliver clean submissions onward — email today, more channels marked *coming soon* in the app. ## Next steps - [Collect your first submission](/forms/quickstart) - [Set up spam protection](/forms/spam) - [Deliver submissions by email](/forms/destinations) - [Endpoint reference for developers](/forms/reference) ## Frequently asked questions ### Do I need my own backend? No. The endpoint is the backend: your static site, landing page, or app POSTs directly to `f.easerix.com` and Forms stores, filters, and delivers the submission. ### Does Easerix use Forms itself? Yes — the contact form on [easerix.com/contact](https://easerix.com/contact) submits to an Easerix Forms endpoint. ### Can visitors upload files? File contents are not stored. If a submission includes file uploads, only the filenames are recorded, in a `_files` field on the submission. ### What happens when I pause a form? The endpoint stops accepting submissions and responds as if the form didn't exist. Your collected submissions are kept, and reactivating the form brings the same endpoint URL back. ### What happens when I delete a form? Deleting a form removes the endpoint **and all of its submissions**. The app asks you to confirm before doing it. # Collect your first submission Create a form, point an HTML form at its endpoint, and watch the submission land in your inbox. Canonical: https://easerix.com/docs/forms/quickstart <Answer> Create a form in the Forms app to get a unique endpoint URL on f.easerix.com, point your HTML form's `action` at it with `method="POST"`, and submit. The submission appears in the form's inbox moments later, and everyone on the notify list gets an email. </Answer> ## Steps 1. Open **Forms** in the Easerix app ([app.easerix.com/forms](https://app.easerix.com/forms)). 2. Choose **New form**. Give it a **Form name** (e.g. *Contact — mysite.com*), optionally add **Notify (emails)**, pick a **Project**, and hit **Create form**. 3. On the form's page, copy the **Endpoint** URL from the banner at the top — it looks like `https://f.easerix.com/a3kx9p`. The **Integrate** panel below it has ready-made **HTML** and **fetch()** snippets for the same endpoint. 4. Put a form on your page that POSTs to the endpoint: ```html <form action="https://f.easerix.com/YOUR_FORM_ID" method="POST"> <label> Email <input type="email" name="email" required /> </label> <label> Message <textarea name="message" required></textarea> </label> <!-- honeypot: bots fill this, humans never see it --> <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px" /> <button type="submit">Send</button> </form> ``` 5. Submit the form. The submission appears in the **Submissions** section of the form's page (and in the cross-form **Inbox**), and any notify emails go out. ## Verify it works Fill in the form and submit. Standard form-encoded POSTs work as-is — no JavaScript, no API key. Within seconds the submission shows up under **Submissions** with every field you sent. If it doesn't appear, click **Show spam** — a test that trips a spam rule is kept there rather than dropped. In particular, if **Cloudflare Turnstile** is switched on in **Settings → Spam protection** but your page doesn't render the Turnstile widget, submissions are flagged as spam; switch it off unless you've embedded the widget. ## Good to know - New forms respond to a plain HTML post with a small JSON body (`{"ok": true}`). For a real site, set **Settings → Success behavior** to **Redirect** and point it at your thank-you page — visitors get sent there after submitting. - Keep the hidden `_gotcha` field: it's the [honeypot](/forms/spam) that silently filters naive bots. It never appears in your inbox. - Name your email field `email` — Forms uses it as the notification's Reply-To and as the [autoresponder](/forms/destinations) recipient. - Submitting with JavaScript instead? See the [`fetch()` example in the endpoint reference](/forms/reference). # Endpoint reference The Forms ingest endpoint contract — accepted content types, field handling, responses, redirects, errors, CORS, and rate limits. Canonical: https://easerix.com/docs/forms/reference <Answer> Send an HTTP POST to `https://f.easerix.com/[form-id]` with form-encoded, multipart, or JSON data — no authentication. JSON clients get back `{"ok": true, "id": "..."}`; plain HTML posts get a 302 redirect when the form is configured for one. Requests are rate-limited to 60 per minute per form and IP. </Answer> ## The endpoint Every form has one public URL, shown on its page in the app: ``` https://f.easerix.com/<form-id> ``` | Method | Behavior | |---|---| | `POST` | Submit the form — the contract below | | `OPTIONS` | CORS preflight — `204` with the form's CORS headers | | `GET` | A friendly JSON hint that the endpoint accepts POST | No API key, no auth header — the form id in the URL is the only credential. A paused or deleted form responds `404` to POST, indistinguishable from a form that never existed. ## Accepted content types | Content-Type | Notes | |---|---| | `application/x-www-form-urlencoded` | What a plain HTML `<form method="POST">` sends — works with zero JavaScript | | `multipart/form-data` | Accepted; **file contents are not stored** — filenames are joined into a `_files` field | | `application/json` | A flat JSON object; body capped at 1 MiB | ## Field handling - Every value is stored as a string. JSON numbers, booleans, and `null` are stringified (`null` becomes an empty string); nested objects and arrays are stored as compact JSON text. - If the same field name is sent more than once (form-encoded/multipart), the last value wins. - URL query parameters are **not** stored as fields — only the request body is. - Name your email field `email`: it becomes the notification's Reply-To and the autoresponder recipient. ### Reserved field names | Field | Meaning | |---|---| | `_gotcha`, `_honey` | Honeypot traps — a non-empty value flags the submission as spam; always stripped before storage | | `cf-turnstile-response` | Cloudflare Turnstile token (the widget adds it automatically); may also be sent as an `X-Turnstile-Token` header; stripped before storage | | `_files` | Written by the server when a multipart submission includes files — don't send it yourself | There is **no** per-request redirect field (no `_next` or similar) — the post-submit redirect is configured per form in the app (see below). ## Success responses The endpoint decides between a JSON response and a redirect based on how you called it. A request counts as a **JSON client** if any of these is true: - the query string has `?ajax=1`, - the `Accept` header contains `application/json`, - the request body is `application/json`. | Caller | Response | |---|---| | JSON client | `200` with `{"ok": true, "id": "<submission-id>"}` | | HTML post, form set to **Redirect** with a URL | `302` — `Location` is the form's configured redirect URL | | HTML post otherwise | `200` with `{"ok": true}` | Spam-flagged submissions return the same success response as clean ones — deliberately, so bots can't detect the filters. ## Error responses All errors are JSON with a single `error` field. | Status | Body | When | |---|---|---| | `400` | `{"error": "could not parse submission"}` | Body didn't parse as the declared content type | | `403` | `{"error": "origin not allowed"}` | Browser `Origin` not on the form's allowed-origins list | | `404` | `{"error": "form not found"}` | Unknown form id — or a paused form (indistinguishable) | | `429` | `{"error": "rate limit exceeded"}` | More than 60 requests/minute for this form from your IP | | `500` | `{"error": "could not save submission"}` | Server-side storage failure | ## CORS By default any origin may POST to a form; browser requests get a matching `Access-Control-Allow-Origin`. To lock a form to your own sites, list them under **Settings → Allowed origins** in the app (exact origin match, e.g. `https://mysite.com`) — other origins then get `403`. Requests without an `Origin` header (curl, server-to-server) are always allowed. `OPTIONS` preflight is handled, allowing `POST` and the `Content-Type` header. ## Rate limits 60 requests per minute per **form + client IP**. Exceeding it returns `429`; wait and retry. ## Submit with JavaScript ```js const res = await fetch("https://f.easerix.com/YOUR_FORM_ID", { method: "POST", headers: { "Content-Type": "application/json", "Accept": "application/json", }, body: JSON.stringify({ email: "visitor@example.com", message: "Hello from my site", }), }); const data = await res.json(); // { ok: true, id: "..." } if (!res.ok) { console.error(data.error); } ``` The same snippet, pre-filled with your form's endpoint, is on the form's page in the app under **Integrate → fetch()**. ## Frequently asked questions ### Do I need an API key to submit? No. The ingest endpoint is public by design — the form id is the only credential. (The management API at `/v1/...` is a different, authenticated surface.) ### Can I make a plain HTML form show JSON instead of redirecting? Yes — append `?ajax=1` to the endpoint URL in your form's `action`, or send an `Accept: application/json` header. The query parameter is not stored as a submission field. ### How do redirects after submit work? Set **Settings → Success behavior** to **Redirect** and provide the URL in the app. Plain HTML posts then get a `302` to it. JSON clients never get redirected — they always receive the JSON body. # Spam protection The four spam defenses in Easerix Forms — honeypot, content filter, AI filter, and Cloudflare Turnstile — and what "marked as spam" means. Canonical: https://easerix.com/docs/forms/spam <Answer> Forms ships four layers of spam protection: a hidden honeypot field, a zero-setup content filter with four sensitivity levels, an AI filter where Claude reviews borderline submissions, and Cloudflare Turnstile verification. Flagged submissions still return success to the bot, but they stay out of your inbox and are never emailed. </Answer> All four are configured per form under **Settings → Spam protection** on the form's page. | Mechanism | What it does | Needs changes on your page? | |---|---|---| | Honeypot field | Hidden field that only bots fill in | Yes — add one hidden input | | Content spam filter | Scores the submitted text for spam signals | No | | AI spam filter | Claude reviews submissions the content filter can't decide | No | | Cloudflare Turnstile | Verifies a CAPTCHA token with each submission | Yes — embed the Turnstile widget | ## Honeypot field Add an input named `_gotcha` (or `_honey`) to your form and hide it with CSS. Humans never see it; naive bots auto-fill every field. On by default for new forms. ```html <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px" /> ``` If the field arrives with a value, the submission is **silently** marked as spam — the bot still gets a success response, so it can't learn it was caught. The field itself is stripped and never shows in your inbox. ## Content spam filter A zero-configuration filter that scores the text of every submission — no CAPTCHA, no keys, works on any domain. It looks for signals like multiple links, known spam keywords, BBCode/HTML link markup, disposable email domains, automated user agents, all-caps shouting, gibberish, and walls of digits. It's deliberately conservative: one weak signal never flags a message; spam has to accumulate several independent signals. Pick a sensitivity level in the app: | Level | Behavior | |---|---| | Off | No content filtering | | Low | Catches only obvious spam | | Medium | Recommended — balanced filtering (the default) | | High | Aggressive — may flag borderline submissions | ## AI spam filter Toggle **AI spam filter** on and Claude adjudicates the gray zone. The content filter splits submissions into three bands: obvious spam and obvious clean are decided instantly by the heuristics — only the ambiguous middle band goes to Claude, which weighs whether a real human plausibly wrote the message for your form's purpose. - Your endpoint stays instant: classification runs after the submission is saved. - Email delivery for a borderline submission waits for the verdict and only goes out if it's clean — usually a matter of seconds. - If flagged, the inbox shows the model's stated reason (prefixed `AI:`). - If the AI check ever fails, filtering falls back to the plain content filter — nothing is lost. ## Cloudflare Turnstile Toggle **Cloudflare Turnstile** on and every submission must carry a valid Turnstile token: embed the Turnstile widget in your form, and it adds the token (a `cf-turnstile-response` field) automatically on submit. JavaScript clients can send the token in an `X-Turnstile-Token` header instead. A submission with a missing or failed token is silently marked as spam — again, the bot sees a normal success response. Because of that, **only enable Turnstile if your page actually renders the widget**; otherwise every legitimate submission gets flagged. ## Which should I use? - **Honeypot + content filter at Medium** is the sensible default for most forms — it requires nothing beyond the hidden field. New forms start with honeypot, a Medium content filter, **and Turnstile** switched on; if your page doesn't render the Turnstile widget, switch Turnstile off. - Add the **AI filter** when spam that reads almost like a real message keeps slipping through, or when High flags too many real messages. - Add **Turnstile** when a form is under sustained bot pressure and you control the page enough to embed the widget. ## What "marked as spam" means A flagged submission is not deleted — it's quarantined: - It's kept in the form's inbox behind the **Show spam** toggle, tagged with a `spam` badge and a **Flagged:** reason explaining which rule caught it. - No notification email is sent, no autoresponder goes out, and it doesn't count in the form's submission charts. - The sender always receives a normal success response, so bots can't probe the filters. Use the shield button on any submission to retriage it — mark spam as not-spam or vice versa — or delete it outright. ## Frequently asked questions ### Does a blocked bot know it was blocked? No. Every spam path returns the same success response a clean submission gets. That's deliberate: filters that reveal themselves get worked around. ### A real message was flagged — what do I do? Turn on **Show spam** in the inbox, find it, and mark it as not spam with the shield button. It's back in your inbox with full contents. Note that retriaging doesn't re-send the notification email — read it in the inbox. ### Can I turn everything off? Yes: switch the honeypot, Turnstile, and AI filter off and set the content filter to **Off**. Every submission then lands in your inbox untouched. (Endpoint rate limiting still applies — see the [reference](/forms/reference).) # Link analytics What Links records on every click and how to read and export it. Canonical: https://easerix.com/docs/links/analytics <Answer> Every visit to a short link records a click. Each link has an analytics view with click totals over time, and the click history can be exported for your own analysis — useful for campaign reporting and attribution. </Answer> ## Reading a link's analytics 1. Open **Links** and select a link. 2. The detail view shows click activity over time and lifetime totals. 3. Use **export** to download the click history when you need the raw data. ## Getting numbers without opening the app - Ask the AI copilot: *"how many clicks did the pricing link get?"* - Over MCP, connected AI clients can call the link-stats and analytics-summary tools. ## Frequently asked questions ### When does counting start? Immediately — the first visit after a link is created is the first recorded click. ### Do paused links record clicks? A paused link shows the unavailable page instead of redirecting; visits during a pause are not destination traffic. # Link-in-bio pages Claim a handle and publish a hosted page of your links at esrx.ly/@handle. Canonical: https://easerix.com/docs/links/bio-pages <Answer> Claim a handle in the Bio page section of Links and you get a hosted link-in-bio page at esrx.ly/@handle — a page title, a short bio, and up to 30 links you can reorder. Pages start as drafts and go live only when you press Publish. </Answer> ## Claim your handle 1. Open **Links** and choose **Bio page** in the sidebar. 2. Type a handle after `esrx.ly/@` — 3–30 characters: lowercase letters, numbers, hyphens, or underscores. 3. Choose **Claim handle**. Handles are first come, first served. New pages start as a **draft** — visitors see nothing until you publish. ## Build the page 1. Set the **Page title** and an optional **Short bio**. 2. Under **Links**, choose **+ Add link** and give each entry a label and a URL — up to 30 per page. 3. Reorder entries with **Move up** / **Move down**. 4. Choose **Save page**. ## Publish it Press **Publish** and the page goes live at `esrx.ly/@your-handle` — use **Copy URL** to grab it for your social profiles. The status line shows **Published** (with a running view count) or **Draft — not publicly visible**. **Unpublish** takes it offline any time without deleting anything. ## Good to know - The page is hosted for you with a clean, fast layout that follows each visitor's light or dark preference. Custom theming isn't available yet. - The view counter increments on every visit to the public page. - Deleting a page frees its handle. ## Frequently asked questions ### Why was my handle rejected? Three reasons: it's already taken, it's a reserved word (like `api` or `admin`), or it doesn't fit the format — 3–30 characters, lowercase letters, numbers, `-` or `_` only. # Bulk actions and CSV export Pause, activate, archive, or delete up to 100 links at once, and export links or click history as CSV. Canonical: https://easerix.com/docs/links/bulk <Answer> Select links with the row checkboxes to pause, activate, archive, unarchive, or delete up to 100 at once, straight from the Links list. For reporting, export the current view as CSV, or download a single link's full click history from its detail page. </Answer> ## Bulk actions 1. On the **Links** page, tick the checkbox on each link you want to change. 2. An action bar appears with the selection count and the actions: **Pause**, **Activate**, **Archive** (or **Unarchive** in the archived view), and **Delete**. **Clear** drops the selection. 3. Choose an action — it applies to every selected link at once, up to 100 per batch. Deleting is permanent: a deleted link's click history is gone for good, and the app confirms before it happens. Pausing is the reversible alternative — paused links show the unavailable page until you activate them again. ## Export your links as CSV The **CSV** button on the Links page downloads the current view — your search and filters are respected — as `links.csv`: | Column | Contents | |---|---| | `shortCode`, `shortUrl` | The code and full short URL | | `destinationUrl`, `title`, `tags` | Where it points and how it's organized | | `clicks` | Lifetime click count | | `active`, `archived` | Current state | | `expiresAt`, `created` | Dates | Exports include up to 10,000 links; a final marker row tells you if the cap was hit. ## Export a link's click history On a link's detail page, the **CSV** control next to the day-range picker downloads every recorded click for that range — up to 50,000 rows: | Column | Contents | |---|---| | `at` | Timestamp of the click | | `country`, `device`, `browser`, `os` | Visitor breakdown fields | | `referrerHost`, `referrer` | Where the click came from | | `isBot` | Whether it was identified as bot traffic | One thing to expect: the click export includes bot traffic (flagged in `isBot`), while the in-app analytics exclude it — so raw export totals can run higher than the numbers on screen. Filter on `isBot` to reconcile them. ## Frequently asked questions ### Can I import links from a CSV? Not yet — links are created one at a time in the app, or programmatically through the AI copilot, the CLI (`easerix links create`), and the API. # Conversion tracking and webhooks Measure what happens after the click, and push link events to your own systems. Canonical: https://easerix.com/docs/links/conversions-and-webhooks <Answer> Links can follow what happens after the click. Conversion tracking appends a click ID to your destination that your site reports back — with an optional value — and outbound webhooks POST signed JSON to your endpoint whenever links are created, updated, deleted, or clicked. Turn on conversion tracking per link; manage webhooks in Settings. </Answer> ## Conversion tracking No pixel, no JavaScript snippet — conversions are reported server-to-server, keyed on a click ID. 1. Open a link's detail page and switch **Conversion tracking** to **On**. 2. From then on, every redirect appends `?esrx_id=<click id>` to the destination URL. Existing query parameters are preserved. 3. Have your site capture and store `esrx_id` when the visitor lands. 4. When the visitor converts, call `POST /v1/track/conversion` from your backend with the `clickId` — plus an optional `name` (like `signup` or `purchase`), `amountCents`, and `currency` if you want revenue attached. Conversion counts appear on the link's detail page, and workspace-wide **Conversions** and **Revenue** cards appear on the Analytics page. Clicks are recorded within about a second of the redirect, so a conversion fired instantly after landing can briefly arrive first — the API tells you to retry once, and that's all it takes. ## Outbound webhooks Webhooks are configured for the whole workspace under **Settings → Webhooks**. ### Set one up 1. Choose **Add**, enter an `https://` endpoint URL, and pick the events to receive. 2. Choose **Create**. The **signing secret** (`whsec_…`) is shown **once** — store it immediately. 3. Use **Test** any time to send a `ping` event to your endpoint. ### Events | Event | Fires when | |---|---| | `link.created` | A link is created | | `link.updated` | A link changes (including pause, archive, and bulk actions) | | `link.deleted` | A link is deleted | | `link.clicked` | A link gets clicks — batched, with `clicks` and `totalClicks` counts, not one call per click | Payloads look like `{"event": "…", "at": "<UTC timestamp>", "data": {…}}`. ### Verify signatures Each delivery is signed with HMAC-SHA256 over the raw request body using your signing secret: | Header | Contents | |---|---| | `X-Easerix-Signature` | `sha256=<hex digest>` — recompute and compare | | `X-Easerix-Event` | The event name | | `X-Easerix-Delivery` | A unique delivery ID, stable across retries | ### Delivery and retries - Any 2xx response counts as delivered. Failures retry twice (about 1s and 5s later) — three attempts total. - After 20 consecutive failures the webhook pauses itself; fix your endpoint and press **Activate** to resume with a clean slate. - The row shows last delivery status and any consecutive-failure streak at a glance. ## Frequently asked questions ### I lost my signing secret — can I see it again? No — it's shown only at creation. Delete the webhook and create a new one to get a fresh secret, then update your endpoint's verification key. # Links Short links on esrx.ly — analytics, routing rules, QR codes, link-in-bio pages, and webhooks. Canonical: https://easerix.com/docs/links <Answer label="What is Easerix Links"> Easerix Links is a link management tool: create short links on the **esrx.ly** domain, track every click with analytics, route visitors with rules, generate QR codes, and publish a link-in-bio page. It's part of the Easerix suite, so links live in the same workspace as your tasks, notes, and forms. </Answer> ## What you can do | Capability | In short | |---|---| | Short links | Custom or generated codes on `esrx.ly` | | Analytics | Per-link click history with export | | QR codes | One per link, ready to download | | Routing rules | Send visitors to different destinations by condition | | Link-in-bio | A hosted page of your links at a handle | | Bulk operations | Create and manage links in batches | | Webhooks | Notify your systems on link events | | Pause / resume | Paused links show a clear unavailable page instead of redirecting | ## Work with Links from anywhere Links is the most connected tool in the suite: - **AI copilot** — ask the copilot in the app to create, update, list, or delete links, or pull a link's stats. - **MCP** — AI clients connected to `mcp.easerix.com` get link tools (create, list, update, delete, stats, batch, bio pages, analytics). - **CLI** — `easerix links list` and `easerix links create <url>` from your terminal. - **API** — full REST API with API-key auth; the developer reference section is on its way. ## Next steps - [Create your first short link](/links/quickstart) - [Understand link analytics](/links/analytics) More guides: - [Route visitors with routing rules](/links/routing-rules) - [Publish a link-in-bio page](/links/bio-pages) - [Bulk actions and CSV export](/links/bulk) - [Track conversions and receive webhooks](/links/conversions-and-webhooks) ## Frequently asked questions ### What domain do short links use? Short links are served on **esrx.ly** — for example `esrx.ly/launch`. Custom codes are yours as long as they're unique. ### What happens when I pause a link? The short URL stops redirecting and shows a neutral "link unavailable" page instead. Unpause it and the redirect resumes — the code is never lost. ### Can I track clicks? Yes. Every redirect records a click, and each link has an analytics view with totals over time that you can export. # Create your first short link From long URL to shareable esrx.ly link in under a minute. Canonical: https://easerix.com/docs/links/quickstart <Answer> Open Links in the Easerix app, paste the destination URL, optionally choose a custom code, and create. Your link is live on esrx.ly immediately, starts recording clicks on first use, and comes with a downloadable QR code. </Answer> ## Steps 1. Open **Links** in the Easerix app ([app.easerix.com](https://app.easerix.com)). 2. Choose **New link** and paste the destination URL. 3. Optionally set a **custom code** — `esrx.ly/your-code` — or let Links generate one. 4. Create. The short link is live immediately; copy it or grab the **QR code**. ## Verify it works Open the short link in a private window: you should land on the destination, and the click appears in the link's analytics view. ## Do it from the copilot or CLI instead - Ask the AI copilot: *"create a short link to example.com/pricing called pricing"* — it will create the link and hand back the short URL. - From a terminal: `easerix links create https://example.com/pricing --title "Pricing"`. ## Good to know - Paused links show an unavailable page rather than a broken redirect — safe to print QR codes. - Custom codes are first come, first served across the workspace. # Routing rules Send visitors of one short link to different destinations by country, device, or traffic split. Canonical: https://easerix.com/docs/links/routing-rules <Answer> Routing rules send visitors of one short link to different destinations. Three rule types exist — Country, Device, and Split — and they're checked in that order on every visit; anyone who matches nothing goes to the main destination. Configure up to 20 rules on the link's detail page. </Answer> ## Add a rule 1. Open **Links**, select a link, and find the **Routing rules** card on its detail page. 2. Choose **+ Add rule** and pick a type: - **Country** — a 2-letter country code, like `DE`. - **Device** — `mobile`, `tablet`, or `desktop`. - **Split** — a traffic share from 1 to 99 percent, for A/B tests. 3. Set the rule's **Destination URL** and, optionally, a **Label (for analytics)**. 4. Choose **Save rules**. ## How rules are evaluated Every visit runs the same fixed order: | Order | Check | |---|---| | 1 | Country rules — first match on the visitor's country wins | | 2 | Device rules — first match on the visitor's device wins | | 3 | Split rules — traffic divides by the weights you set | | 4 | No match → the link's main destination | Split weights across a link must sum to 99 or less; the remainder of traffic stays on the main destination. ## See which variant won Once rules start matching, the link's detail page shows a **Variants (A/B)** breakdown — clicks per rule, named by the label you gave each one. Label your rules something readable (`homepage-b`, `de-landing`) and the analytics stay readable too. ## Good to know - Redirects are cached briefly for speed — rule changes can take up to about 30 seconds to apply. - Up to **20 rules per link**. - Destinations without a scheme get `https://` added automatically. ## Frequently asked questions ### Can I route by browser, referrer, or time of day? Not yet — routing matches country, device, and traffic split today. Browser, OS, and referrer are still recorded on every click, so you can see those breakdowns in the link's [analytics](/links/analytics). # Notes AI Inline writing help, page summaries, and questions answered only from your own pages. Canonical: https://easerix.com/docs/notes/ai <Answer> Notes AI drafts content, summarizes the page you're on, and answers questions — and its answers are grounded only in pages you can already access. "Ask your workspace" searches with your own credentials, so the AI can never read a page you couldn't open yourself, and it cites the pages it used. </Answer> ## The data boundary, plainly This is the most important thing to know about Notes AI: - **Ask your workspace answers only from your own pages.** The AI searches Notes *as you* — using your login, with your permissions — and is instructed to answer only from what it finds. It cannot see another person's private space, another team's space, or anything you couldn't open yourself. - **If your pages don't contain the answer, it says so** instead of inventing one. - **Every answer cites its sources.** The pages that informed the answer appear under **Sources** — click one to open it and check. - **What leaves Easerix:** your prompt and the relevant page text are sent to Anthropic (the AI model provider) to generate the response. Nothing else is shared, and no other user's content is ever included. ## The three modes Open a page and choose the **AI assistant** button in the header (the ⚡ icon): | Mode | What it does | Uses | |---|---|---| | **Write** | Drafts content from your prompt, aware of the current page | Prompt + this page's text | | **Summarize page** | Summary plus key points and action items for the open page | This page's text | | **Ask your workspace** | Answers a question from your pages, with citations | Your top matching pages | ## Using it 1. On any page, open the **AI assistant** panel (or press **/** and pick AI). 2. Pick a mode and type your prompt — e.g. *"an onboarding checklist for new engineers"* (Write) or *"what did we decide about pricing?"* (Ask). 3. Choose **Generate** / **Summarize** / **Ask**. The response streams in; **Stop** cancels it. 4. For Write and Summarize, **Insert into page** drops the result into the document as regular blocks you can edit. ## Limits - Responses are rate limited to keep the assistant snappy — if you hit the limit, wait a minute. - "Ask" grounds itself in the top matching pages (up to five), so very broad questions work best when your pages actually cover the topic. ## Frequently asked questions ### Is my content used to train AI models? Notes AI sends your prompt and page text to Anthropic's API to generate each response. Easerix does not use your content to train models. ### Can the AI answer from a teammate's private pages? No. The search behind "Ask your workspace" runs with *your* access token, so it sees exactly what you see — nothing more. ### Does the AI change my page without asking? Never. Output appears in the panel first; nothing touches the document until you choose **Insert into page**. # Collaborate on pages Realtime co-editing, presence, comments, and public share links. Canonical: https://easerix.com/docs/notes/collaboration <Answer> Put a page in a team or org space and everyone with access can edit it at the same time — live cursors, per-person presence avatars, and per-user undo. Comments live in a side panel, and any page can be published to the web with a view or edit link you can revoke at any time. </Answer> ## Realtime editing Open the same page as a teammate and you're co-editing: - Everyone's edits appear live, with a **named, colored cursor** per person. - The header shows **presence avatars** — one per person, with a badge when someone has multiple tabs open. - Undo is **per user**: Ctrl/Cmd+Z undoes your changes, not your teammate's. Access follows the page's space: private pages are yours alone, team-space pages are editable by that team, org-space pages by everyone in the organization. If the realtime connection drops, the save chip switches to **Offline — retrying** and Notes falls back to autosave. If two people save over each other in fallback mode, a banner offers **Load their version** or **Keep mine** — nothing is silently lost. ## Comments 1. Open a page and choose the **Comments** button in the header (the inbox icon). 2. Write in the panel and press **Send** (or ⌘↵). 3. Use the check button on a comment to **Resolve** it — resolved comments stay visible but fade; **Reopen** brings them back. Comments show the author's name and time. You can delete your own comments. ## Share a page to the web Publishing gives a page a public URL that works for anyone with the link — no Easerix account needed. 1. Open the page menu (**⋯**) and choose **Share to web**. 2. Pick a mode: | Mode | Who can do what | |---|---| | **Can view** | Read-only. Anyone with the link. | | **Can edit** | Anyone with the link edits — sign-in optional. | 3. Choose **Create view link** / **Create edit link** — the URL is copied for you. A page can have several links at once (say, a view link for customers and an edit link for a contractor). Each link shows in the list with its mode and age; the trash button **revokes** it immediately. On a shared page, signed-in visitors appear by name; everyone else shows as Anonymous. ## Frequently asked questions ### Who can see a page I created in my Private space? Only you, until you move it (**⋯ → Move to space…**) or create a share link. Moving a page to a wider audience always asks for confirmation first. ### Do public share links expire? No — they work until you revoke them. Revoking is instant and per-link. ### Can visitors on an edit link break something permanently? Edits through a share link go through the same document as everyone else's, so version history still applies — you can restore an earlier snapshot from **Version history** at any time. # Notes FAQ Quick answers about privacy, sharing, collaboration, saving, and limits in Easerix Notes. Canonical: https://easerix.com/docs/notes/faq <Answer> The short version: pages are private by default, spaces control who sees what, everything autosaves with version snapshots behind it, realtime editing works whenever two people open the same page, and the AI only ever reads pages you yourself can open. Details below. </Answer> ## Privacy and access ### Who can see my pages? The page's space decides: **Private** pages are yours alone; **team** spaces are visible to that team; **org** spaces to everyone in your organization. The badge next to the page title always shows the current audience. ### Are my private pages really private? Yes — private-space pages are only readable by you. Even Notes AI can't surface them to anyone else, because it searches with each user's own credentials. ### What do public share links expose? Exactly one page (the one you shared), in the mode you chose — view or edit. Nested pages, your sidebar, and the rest of the space are not exposed. Revoke a link and it stops working immediately. ## Editing and saving ### Do I need to save? No. Pages autosave as you type — the chip in the header shows **Saved**, **Saving…**, or **Offline — retrying** if your connection drops. Unsaved changes also trigger a browser warning before you close the tab. ### What happens if two people edit at once? With realtime collaboration you simply see each other's cursors and edits live. In fallback (non-realtime) mode, a conflict banner appears with **Load their version** and **Keep mine** — you decide, nothing is overwritten silently. ### Can I undo a teammate's change? Your Ctrl/Cmd+Z only undoes your own edits during a session. To roll the whole page back, use **⋯ → Version history** and restore an earlier snapshot. ## Content ### What block types are supported? Paragraphs, headings (3 levels), bulleted/numbered/to-do lists, quotes, code blocks with syntax highlighting, callouts, tables, dividers, and images — plus live embeds of your Easerix Tasks and Links. Press **/** in the editor to see the menu. ### Can I paste images? Yes — paste or drag images into a page and they upload automatically as attachments. ### Can I get my content out? Every page exports to Markdown (**⋯ → Export Markdown**). Imports work the other way: Markdown files, Notion "Markdown & CSV" export zips, and Markdown downloads from Google Docs. ## AI ### Does the AI read my whole workspace? It can only read pages your account can open, and only pulls in the top matches for your question. It cites those pages under **Sources** so you can verify the grounding yourself. See [Notes AI](/notes/ai) for the full data boundary. ## Where things run | Surface | URL | |---|---| | Notes | [app.easerix.com](https://app.easerix.com) → Notes | | Public shared pages | the `/share/…` link Notes generates for you | | Account & organization settings | [account.easerix.com](https://account.easerix.com) | # Notes Collaborative pages and docs — realtime editing, AI assistance, versions, backlinks, search, and public sharing. Canonical: https://easerix.com/docs/notes <Answer label="What is Easerix Notes"> Easerix Notes is a collaborative documents tool: write pages in a rich block editor, organize them into private, team, and org spaces, and edit together in real time with live cursors. It includes AI writing help grounded in your own pages, version history, backlinks, search, and public share links. </Answer> ## What you can do | Capability | In short | |---|---| | Pages & blocks | Rich editor — headings, lists, to-dos, tables, code, callouts, images | | Spaces | Private, team, and org spaces control who sees a page | | Realtime collaboration | Live concurrent editing with named cursors and presence | | Comments | Discuss a page in a side panel; resolve when done | | Versions | Automatic snapshots with preview and one-click restore | | Backlinks | Link pages with `@` or `[[`; see linked references on every page | | Search | Full-text search across titles and page content | | Templates | Save any page as a template and reuse it | | Public sharing | View or edit links anyone can open — revoke any time | | Import & export | Markdown files and Notion exports in; Markdown out | | Notes AI | Write, summarize, and ask questions answered from your own pages | ## How pages are organized Pages live in **spaces**, and spaces set the audience: - **Private** — only you. Every account starts with one. - **Team spaces** — visible to one team in your organization. - **Org spaces** — visible to everyone in your organization. Pages nest inside each other to any depth, so a space becomes a tree of docs. Moving a page to a wider space asks for confirmation before it becomes visible to more people. ## Next steps - [Write your first page](/notes/quickstart) - [Collaborate on pages](/notes/collaboration) - [Notes AI and its data boundary](/notes/ai) - [Search, versions, and organizing](/notes/organizing) ## Frequently asked questions ### Where do I open Notes? In the Easerix app at [app.easerix.com](https://app.easerix.com) — Notes is one of the tools in the launcher. ### Can I use Notes alone, without a team? Yes. Your Private space works with no organization at all. Team and org spaces only appear when you're part of one. ### Does deleting a page destroy it immediately? No — **Move to trash** archives it, and Trash lets you restore or delete forever. **Delete forever** is the only irreversible action, and it asks first. # Search, versions, and organizing Find anything, link pages, reuse templates, favorite, restore versions, use the trash, and import existing docs. Canonical: https://easerix.com/docs/notes/organizing <Answer> Notes keeps a workspace navigable as it grows: full-text search across every page, backlinks between pages, templates for repeated structures, favorites pinned in the sidebar, automatic version snapshots you can restore, a trash with restore, and an importer for Markdown files and Notion exports. </Answer> ## Rearranging pages by dragging Drag any page in the sidebar to move it. Where you drop decides what happens: | Drop it… | Result | |---|---| | On another page | The page nests inside it as a sub-page | | Between two pages | It lands in that spot in the order | | On a space heading (Private, a team, Everyone) | It moves to that space, at the top level | Sub-pages always travel with their parent. Dropping a page into a space with a wider audience asks you to confirm first, exactly like **Move to space…** does — and if you prefer not to drag, that menu still does the same job from the page itself. Two moves are refused because they'd break the outline: you can't drop a page inside itself or inside one of its own sub-pages, and a page can't sit under a parent in a different space. ## Spaces and who can see them Every page lives in a space, and the space decides who can read and edit it. The icon beside each space in the sidebar tells you which is which: 🌐 **Everyone** (anyone in your organization), 👥 **Team** (one team), 🛡 **Private** (only you). ### Change who can see a space Open a space's **⋯** menu and choose **Who can see it…**. Pick the new audience and save — every page in the space moves with it. Two rules keep this safe: - **Opening a space up asks you to confirm.** Making a private or team space visible to everyone means people who couldn't see those pages before can now read *and* edit them, so the change says so before it happens. - **A Private space stays private.** You can't flip your own private space open in one step; move the pages you want to share into a shared space instead (**⋯ → Move to space…**), which keeps the decision page by page. Who can make the change: the person who created the space, or an **owner or admin** of your organization — so a space that was shared too widely can always be reined in, even if the person who created it is unavailable. Audience changes are recorded in your organization's audit log. ## Search Choose **Search** at the top of the sidebar and start typing. Results match page titles *and* the text inside every block, with the matching phrase highlighted in a snippet. Results are limited to pages you can access. ## Backlinks Type `@` or `[[` while writing to link another page by name. Links are two-way: the page you linked *to* lists every page that mentions it under **Linked references** at the bottom — a lightweight wiki without any setup. ## Templates For structures you repeat — meeting notes, project briefs, runbooks: 1. Build the page once, then choose **⋯ → Save as template** and name it. 2. Templates appear in a **Templates** section at the bottom of the sidebar. 3. Click one to create a fresh page from it, ready to fill in. ## Favorites Click the **star** in a page's header to favorite it. Favorites get their own section at the top of the sidebar, on every screen — your shortcut list for the handful of pages you open daily. ## Version history and restore Notes snapshots pages automatically as you write — there is no "save version" button to forget. 1. Open **⋯ → Version history** on any page. 2. Each snapshot shows its title and age. The **eye** button previews the text without touching the page. 3. Choose **Restore** to make that snapshot the current content. Restoring propagates live to anyone else on the page. ## Trash **⋯ → Move to trash** archives a page. **Trash** in the sidebar lists archived pages, where you can: | Action | Effect | |---|---| | **Restore** | Puts the page back exactly where it was | | **Delete forever** | Permanent removal — asks for confirmation | The page menu also offers **Delete forever** directly for when you're certain. ## Import your existing docs Choose **Import** in the sidebar to bring content in: - **Markdown** — `.md`, `.markdown`, and `.txt` files import as pages. - **Notion** — export from Notion as "Markdown & CSV", then upload the `.zip`. Folder structure becomes page hierarchy, and Notion's ID suffixes are stripped from titles. - **Google Docs** — in Google Docs use File → Download → Markdown, then upload the file here. Import shows per-file progress. If it fails part-way, pages created so far are kept — re-run with the remaining files. ## Export Any page exports to Markdown: **⋯ → Export Markdown** downloads the page as a `.md` file. ## Frequently asked questions ### How many versions are kept? Snapshots are captured automatically and throttled as you write, so you'll see a trail of recent states rather than one per keystroke. Open **Version history** on a page to see exactly what's available. ### Does search find archived pages? Search covers your accessible pages; trashed pages are managed from the **Trash** screen, where you can restore them first. ### Can I move a page between spaces later? Yes, two ways: **drag it in the sidebar** onto another space, or use **⋯ → Move to space…** on the page. Either way the page and everything nested inside it move together, and widening the audience (private → team → org) asks for confirmation first. ### I shared a space with the whole org by mistake. Can I undo it? Yes. Open the space's **⋯ → Who can see it…** and pick a narrower audience — a single team, or Private if you created the space. Narrowing takes effect immediately for everyone else. # Write your first page From blank page to a formatted, shareable doc in a couple of minutes. Canonical: https://easerix.com/docs/notes/quickstart <Answer> Open Notes in the Easerix app, choose New page in the sidebar, type a title, and start writing. Press "/" for blocks — headings, lists, tables, code, images — and everything saves automatically as you type. Your page is private until you move it to a shared space or share it. </Answer> ## Steps 1. Open **Notes** in the Easerix app ([app.easerix.com](https://app.easerix.com)). 2. Choose **New page** in the sidebar. New pages land in the space you create them from — **Private** by default. 3. Type a title, press **Enter**, and write. The header shows **Saved** / **Saving…** so you always know where you stand. 4. Press **/** anywhere to insert a block: headings, bulleted and numbered lists, to-do lists, quotes, code blocks, callouts, tables, dividers, and images. 5. Give the page an icon with the emoji picker above the title, and use the **+** next to any page in the sidebar to nest a page inside it. ## Formatting that just works - **Markdown shortcuts** — `#` for a heading, `-` for a bullet, `1.` for a numbered list, `>` for a quote, ` ``` ` for code. - **Select text** for the inline formatting menu; a drag handle moves blocks around. - **Images** — paste or drag them straight into the page; they upload as attachments. - **Link pages** — type `@` or `[[` and pick a page. The target page lists yours under **Linked references**. ## Verify it works Refresh the page — your content is exactly where you left it, the sidebar shows the page in its space, and **Search** finds it by title or any phrase inside it. ## Good to know - One title convention: an untitled page displays as "Untitled" until you name it. - Every page keeps automatic version snapshots from the moment you start writing — see [versions and restore](/notes/organizing#version-history-and-restore). - To bring in existing docs (Markdown files or a Notion export), use [Import](/notes/organizing#import-your-existing-docs). # Writing & Markdown reference Every formatting shortcut Notes understands — checkboxes, headings, lists, tables, code, and what happens when you paste Markdown. Canonical: https://easerix.com/docs/notes/writing <Answer> Notes speaks Markdown. Type `[]` followed by a space for a checkbox, `#` for a heading, `-` for a bullet, `1.` for a numbered list. Pasting Markdown text converts it to rich blocks automatically, and exporting a page gives you clean Markdown back. </Answer> There are three ways to format as you write, and they all work together: 1. **Markdown shortcuts** — type the marker and keep going (fastest). 2. **The `/` menu** — press `/` on any line to insert a block from a list. 3. **The selection menu** — select text for bold, color, links, and turn-into. ## Checkboxes and to-do lists Type any of these at the start of a line, then a space: | You type | You get | |---|---| | `[]` | An unchecked to-do item | | `[x]` | A checked to-do item | | `- [ ]` | An unchecked to-do item (GitHub style) | | `- [x]` | A checked to-do item (GitHub style) | Press **Enter** to continue the list with a new checkbox, **Tab** to nest a sub-task, and **Backspace** on an empty item to exit the list. Click the box to toggle it — collaborators see the change live. Both spellings also work when you **paste** a to-do list from anywhere else: GitHub-style `- [ ]` task lists and bare `[] task` lines both become interactive checkboxes. Capital `[X]` is fine too. ## Headings | You type | You get | |---|---| | `# Text` | Heading 1 | | `## Text` | Heading 2 | | `### Text` | Heading 3 | Deeper heading levels (`####` and beyond) fold into Heading 3 — Notes keeps page structure to three levels on purpose. Pasted documents using setext headings (a line of `===` or `---` under the text) convert too. ## Lists | You type | You get | |---|---| | `-`, `*`, or `+` | Bulleted list | | `1.` or `1)` | Numbered list | | `3.` | Numbered list starting at 3 | **Tab** indents a nested list; **Shift+Tab** brings it back out. Lists of all three kinds can nest inside each other, including to-dos under bullets. ## Inline formatting | You type | You get | |---|---| | `**bold**` or `__bold__` | **Bold** | | `*italic*` or `_italic_` | *Italic* | | `***both***` | ***Bold italic*** | | `~~strike~~` | ~~Strikethrough~~ | | `==highlight==` | Highlighted text | | `` `code` `` | Inline code | | `[title](https://url)` | A link | | `<https://url>` or a bare URL | An automatic link | Keyboard equivalents: **⌘B** bold, **⌘I** italic, **⌘U** underline, **⌘⇧X** strikethrough, **⌘E** code, **⌘K** link. Text color and highlight colors live in the toolbar at the top of the page and in the selection menu. Need a literal `*` or `#`? Escape it with a backslash: `\*not emphasis\*`. ## Blocks | You type | You get | |---|---| | `>` + space | Quote | | `---`, `***`, or `___` on its own line | Divider | | ```` ``` ```` or `~~~` (optionally with a language: ```` ```python ````) | Code block with syntax highlighting | | `@` or `[[` | Link to another page (backlinks are tracked) | | `/` | The full block menu — tables, callouts, images, embeds | ## Tables Paste a Markdown table and it becomes a real table: ``` | Plan | Price | | --- | --- | | Starter | $0 | | Team | $12 | ``` You can also insert one from the `/` menu and edit cells directly. ## Pasting Markdown When you paste plain text that contains Markdown structure — headings, lists, checkboxes, quotes, code fences, tables — Notes converts it to rich blocks automatically. Ordinary prose pastes as ordinary text; the conversion only kicks in when the text actually looks like Markdown. Pasting from rich sources (Google Docs, web pages) keeps their formatting as before, and pasted images upload straight into the page. This is the fastest way to move content in from a README, a ChatGPT/Claude answer, a GitHub issue, or any Markdown editor. ## Exporting Markdown Every page exports to clean Markdown (page menu → **Export**), including checkboxes as `- [ ]` / `- [x]`, so your content is never locked in. The [importer](/notes/organizing#import-your-existing-docs) accepts Markdown files and full Notion exports the same way. ## Good to know - Checkbox state syncs in realtime — two people can work the same checklist. - Markdown shortcuts fire as you type; nothing happens to text you've already written until you select it and use the menu. - Inside code blocks, nothing converts — paste config and scripts safely. # FAQ Common questions about Easerix Sign — the audit trail, storage and access, links, limits, and webhooks. Canonical: https://easerix.com/docs/sign/faq <Answer> Quick answers about Easerix Sign: what the audit trail records, where your files live and who can see them, what happens to signing links over time, the file limits, and how to feed signature events into your own systems with webhooks. For sending basics, start with the quickstart instead. </Answer> ## Frequently asked questions ### Are documents signed with Easerix Sign legally binding? That depends on your document, your jurisdiction, and your situation — it's a question for a legal professional, and Easerix Sign doesn't make legal claims on your behalf. What Sign does is record evidence: every document carries an audit trail of who acted, what they did (viewed, filled a field, signed, declined), when, and from which IP address; signers tick an explicit consent checkbox before finishing; and the completed PDF includes a certificate of completion built from that trail. ### What exactly does the audit trail record? Each event records the actor, the action, a timestamp, the IP address it came from, and the browser used. Events cover the document's whole life — created, file attached, sent, reminded, viewed, field filled, signed, declined, voided, completed — and each event carries a SHA-256 hash chaining it to the one before it, so the history is tamper-evident. The trail is on every document page, and the certificate of completion in the final PDF carries it too. ### Where are my documents stored, and who can see them? Uploaded PDFs are stored in Easerix Sign's cloud file storage, and each document belongs to your workspace. A document is private to you until you choose **Share with workspace**, which makes it visible to your teammates. Recipients only ever see the documents sent to them, through their personal signing links. ### Can people without an Easerix account sign? Yes — that's the normal flow. Signers get an email with a personal link and complete everything in the browser. See [You've been asked to sign](/sign/for-signers). ### How are signing links protected? Each link contains a long token unique to one recipient on one document, so it works only for them. You can add a per-recipient access code (share it outside the email) as a second factor, and repeated failed attempts against signing links are rate-limited. Links stop working the moment a document is voided or expires. ### What are the file limits? PDF only, up to 25 MB per document. ### Can I download a signed document later? Yes. **Download** on the document page always fetches the current PDF; once the document is completed, that's the final version with every signature stamped in plus the certificate of completion. Signers also receive the final document by email. ### Can I connect Sign to my own systems? Yes — webhooks, under **Settings → Webhooks** in Sign. Add an endpoint URL and Sign POSTs document events (sent, viewed, signed, declined, completed, voided, expired) to it. Deliveries are HMAC-signed with an `X-Easerix-Signature: sha256=<hex>` header over the raw body; the signing secret is shown once when you create the webhook. # You've been asked to sign What to do when an Easerix Sign email lands in your inbox — no account needed. Canonical: https://easerix.com/docs/sign/for-signers <Answer> Someone used Easerix Sign to ask for your signature. The email you received contains a personal signing link — the address includes `/s/` followed by a code that's unique to you. Open it in any browser, review the document, fill in your fields, draw or type your signature, and finish. No account needed. </Answer> ## What the email is The sender uploaded a document to Easerix Sign and added you as a recipient. The email may include a short message from them, and its link opens the document directly — the link itself is your access, so there is nothing to install and nothing to sign up for. Don't forward it: anyone with the link can open your copy of the document. ## Open your link 1. Open the link from the email. You'll see the document with the sender's message, if they wrote one. 2. If the page says **This document is protected**, the sender added an access code. Enter the code they gave you (outside the email) and choose **Unlock**. 3. Review the document. Fields assigned to you are highlighted on the page itself. ## Sign the document 1. Fill in any text or checkbox fields placed for you. Date fields are filled automatically when you finish. 2. Choose **Add signature** (or tap a highlighted **Sign here** box). Draw your signature with your finger or mouse, or switch to the **Type** tab and type your full name. 3. Optionally tick **Save this signature for next time** — it's kept in your browser only, for reuse on this device. 4. Choose **Apply signature**, then tick the consent checkbox agreeing to sign electronically. 5. Choose **Finish & sign**. Your signature is recorded and the sender is notified. ## If you'd rather not sign Choose **Decline to sign**, optionally give a reason, and confirm. The sender is notified and the request is closed — nothing further is needed from you. ## Signing in person Sometimes the sender will sign you in person instead: they hand you their own device with a signature pad open, you draw your signature, and hand it back. An in-person signature is recorded exactly like a remote one, including on the document's audit trail. ## What happens after - Once **everyone** has signed, you'll get the final document by email — the PDF with all signatures stamped in, plus a certificate of completion. - Reopening your link after signing shows your status, and once the document is complete it offers **Download signed document**. - If the link shows **This request expired** or **This document was voided**, the request is closed; ask the sender for a fresh copy if it's still needed. - If it says **Not your turn yet**, the document is being signed in a set order — you'll be emailed the moment it's your turn. ## Frequently asked questions ### Do I need an Easerix account? No. The link in your email is your access — you review, fill, and sign entirely in the browser, on any device. ### Is my data safe? Your link is unique to you, and the sender can additionally protect the document with an access code shared with you separately. Repeated failed attempts against signing links are rate-limited. What you enter — your field values and signature — is stored with that document and visible to its sender, and your signing actions are recorded on the document's audit trail with a timestamp and IP address. ### Can I download the document before signing? If you were added as a viewer, yes — there's a download button on your page. As a signer, you can read the full document in the browser before deciding, and you'll receive the final PDF by email once everyone has signed. # Sign E-signature — upload a PDF, place fields, send for signature, and collect signatures through personal links with a full audit trail. Canonical: https://easerix.com/docs/sign <Answer label="What is Easerix Sign"> Easerix Sign is an e-signature tool: upload a PDF, place signature fields, and send it to recipients, who sign from a personal emailed link — no account required on their side. Track every document's status, remind or void it, reuse templates, and rely on a per-document audit trail that records who did what, when, and from where. </Answer> ## What you can do | Capability | In short | |---|---| | Send PDFs for signature | Upload a PDF up to 25 MB, or start from a template | | Field placement | Signature, Initials, Date signed, Text, and Checkbox fields, placed by clicking the page | | Recipients | Signer, Viewer, and CC roles; optional per-recipient access code; signing all at once or in order | | Public signing links | Signers open a personal `/s/` link — no account, works on any device | | In-person signing | Hand your device to the signer and capture their signature on the spot | | Remind and void | Re-email unsigned signers, or void a request with a reason | | Bulk send | Fan one draft out as up to 100 individual copies, each with its own links | | Audit trail | Every action recorded with actor, timestamp, and IP address | | Templates | Reusable documents with signers and fields already placed | | Saved signature | Adopt a signature once and reuse it for in-person signing | | Webhooks | HMAC-signed POSTs to your endpoint on document events | | Workspace sharing | Documents are private to you until you share them with your workspace | ## Work with Sign from anywhere - **AI copilot** — ask the copilot in the app to list your documents, send a draft for signature, remind signers, or void a document. - **MCP** — AI clients connected to `mcp.easerix.com` can list your Sign documents. ## Next steps - [Send your first document](/sign/quickstart) - [Received a signing link? Start here](/sign/for-signers) - [Track, remind, void, and bulk send](/sign/managing-envelopes) ## Frequently asked questions ### What file types can I send? PDF only, up to 25 MB per document. If your document is in another format, export it as a PDF first. ### Do the people signing need an Easerix account? No. Each signer gets an email with a personal signing link and completes everything in the browser — review, fields, signature. See [You've been asked to sign](/sign/for-signers). ### What do I get when everyone has signed? A final PDF with every signature stamped in, plus a certificate of completion that carries the document's full audit trail. Signers receive it by email, and you can download it from the document page at any time. # Track, remind, void, and bulk send Document statuses, reminders, voiding, bulk send, and the audit trail. Canonical: https://easerix.com/docs/sign/managing-envelopes <Answer> Every Easerix Sign document moves through clear statuses — Draft, Out for signature, Completed, Declined, Expired, or Voided. While a document is out for signature you can remind unsigned signers, void it with a reason, or sign someone in person. Bulk send fans one draft out to up to 100 recipient sets, and the audit trail records every action. </Answer> ## Document statuses The documents list groups everything under tabs — All, Drafts, Awaiting, Completed, Declined, Expired, Voided — with a search box and, in a shared workspace, an Everyone / Mine / Shared filter. | Status | Meaning | |---|---| | Draft | Being prepared — file, recipients, and fields can still change | | Out for signature | Sent; signing links are live and signers are working through it | | Completed | Everyone signed; the final PDF and certificate of completion exist | | Declined | A recipient declined to sign, closing the request for everyone | | Expired | The signing deadline passed before completion; links no longer work | | Voided | You cancelled the request; links stopped working immediately | Each recipient also has their own status on the document page: Not sent, Pending, Sent, Viewed, Signed, or Declined. ## Remind signers 1. Open a document that's out for signature and choose **Remind**. 2. Every signer who hasn't signed yet gets a fresh email with their link. Prefer not to think about it? Turn on **Auto-remind** in the send dialog (every 2 or 3 days, or weekly) and Sign re-emails unsigned signers automatically. ## Void a document 1. Open the document and choose **Void**. 2. Optionally give a reason — it's shared with recipients. 3. Confirm with **Void document**. Signing links stop working immediately, unsigned recipients are notified, and this can't be undone. ## Sign someone in person On a document that's out for signature, **Sign in person** opens a signature pad for the next unsigned signer — hand them your device, let them draw, and their signature is recorded exactly like a remote one, audit trail included. ## Bulk send Send the same draft to many people, each getting their own independent copy: 1. In the draft editor, choose **Bulk send**. 2. Enter one line per envelope — `Ada Lovelace <ada@example.com>` or just the email. If the draft has multiple recipient slots, separate them with semicolons, in slot order. 3. Optionally add a message and send. Up to 100 envelopes per batch. Each recipient set gets its own copy with its own signing links, and the draft stays reusable for the next batch. ## The audit trail Every document page shows its audit trail: who did what — created, attached the file, sent, viewed, filled a field, signed, declined, voided, completed — with a timestamp and the actor's IP address. Events are chained together so the history is tamper-evident, and the completed PDF carries a certificate of completion built from this trail. ## Sharing and access Documents are private to you until you choose **Share with workspace** on the document page (**Make private** reverses it). Shared documents appear for teammates under the **Shared** filter. **Download** fetches the current PDF — the final stamped version once the document completes. ## Frequently asked questions ### Can I edit a document after sending it? No. Once sent, the file, recipients, and fields are locked. Void it, then create and send a corrected copy — the void reason tells recipients why. ### What happens when a document expires? If you set an expiry and the deadline passes before everyone signs, the document moves to Expired and its signing links stop working. Send a fresh copy if it's still needed. ### Can I get notified in my own systems? Yes — add a webhook under **Settings → Webhooks**. Sign POSTs document events (sent, viewed, signed, declined, completed, voided, expired) to your endpoint, HMAC-signed via the `X-Easerix-Signature` header. # Send your first document From PDF to signature request in a few minutes — upload, place fields, add recipients, send. Canonical: https://easerix.com/docs/sign/quickstart <Answer> Open Easerix Sign in the Easerix app, choose New document, and upload a PDF. In the editor, add your recipients, pick fields from the palette and click the page to place them, then choose Review & send. Each signer gets an email with a personal signing link, and the document appears under Awaiting. </Answer> ## Steps 1. Open **Sign** in the Easerix app ([app.easerix.com/sign](https://app.easerix.com/sign)) and choose **New document**. 2. Drag & drop your PDF (up to 25 MB) or **Choose a file** — or start from a template. 3. In the editor's **Recipients** panel, choose **+ Add** and enter each person's name and email. Pick a role — **Signer**, **Viewer**, or **CC** — and optionally set an access code to share with them separately. 4. Place fields: pick **Signature**, **Initials**, **Date signed**, **Text**, or **Checkbox** from the **Fields** palette, then click the page where it should go. Drag to move, use the corner handle to resize, and assign each field to a signer in the **Assigned to** dropdown. Changes save automatically. 5. Choose **Review & send**. Optionally add a message, set an expiry (7–90 days or never), turn on auto-remind, and — with multiple signers — pick **All at once** or **In order**. Then choose **Send for signature**. ## Verify it works The document moves to the **Awaiting** tab on your documents list, and every signer receives an email with their personal signing link. Open the document to watch each recipient's status change from Sent to Viewed to Signed, with every step landing on the audit trail. ## Good to know - Fields are required by default (except checkboxes) — toggle **Required** per field in its properties panel. - Date fields fill themselves at the moment of signing; signers can't backdate them. - You can't place fields until the draft has at least one signer. - Sending the same paperwork often? [Save the document as a template](/sign/templates) before or after sending. # Templates and saved signatures Reuse documents with signers and fields already placed, and adopt a signature once. Canonical: https://easerix.com/docs/sign/templates <Answer> In Easerix Sign, save any document as a template to reuse its signer slots and field layout, or build one from scratch on the Templates page. Using a template creates a fresh draft — the template itself never changes. Separately, adopt a saved signature in Settings once and reuse it whenever you sign in person. </Answer> ## Save a document as a template 1. Open any document and choose **Save as template**. 2. Give it a name and a category (HR, Legal, Business, Finance, Marketing, IT, or Other). 3. Choose **Save template**. The template keeps the document's signer slots and every placed field. ## Create a template from scratch 1. Open **Templates** and choose **New template**. 2. Name it, describe it, pick a category, and choose **Create template**. 3. Open its editor to attach a PDF and place fields — or save an existing document into it later. ## Use a template 1. On the **Templates** page, choose **Use template** on any card (the **New document** page also shows your most recent templates). 2. A fresh draft opens with the fields and signer slots already in place. 3. Template signer slots arrive without email addresses — add each person's email in the **Recipients** panel, then send as usual. Some built-in templates carry editable content and offer **Review & customize** instead — fill in the blanks and Sign renders the customized PDF into your draft. ## Manage your templates | Action | Where | |---|---| | Edit the layout | The edit icon on your template's card — opens the field editor | | Delete | The delete icon on your template's card | | See how often it's used | Each card shows signer count, field count, and a usage counter | Built-in public templates can be used but not edited or deleted. ## Saved signatures Adopt a signature once and Sign reuses it whenever you sign in person on your documents: 1. Open **Settings → Signature** in Sign. 2. Choose **Adopt a signature** and draw or type it. 3. It now appears as a **Saved** tab in the signature pad. Use **Replace signature** or **Remove** any time. People signing through a public link can also tick **Save this signature for next time** — theirs is kept in their own browser, not on your account. ## Frequently asked questions ### Does sending a document created from a template change the template? No. Using a template always creates an independent draft; the template's layout, signer slots, and usage counter are all that live on the template itself. ### Can I share templates with my team? Templates you create appear in your own library, and the built-in library is available to everyone. There's no team-template sharing control in the app today. # Board and views My Issues, the team issue list with filters and bulk edits, and the drag-and-drop board. Canonical: https://easerix.com/docs/tasks/board-and-views <Answer> Tasks gives you three ways to see work: My Issues for everything on your plate, the team Issues list with grouping, sorting, filters, and bulk edits, and the Board, where dragging a card between columns changes whatever the columns represent — status, assignee, priority, or project. </Answer> ## My Issues The home view is personal. Tabs across the top slice your own work: **All active**, **Backlog**, **Assigned to me**, **Due soon**, and **Created by me** — each grouped by status. ## The Issues list **Issues** in the sidebar shows every issue in the current team. - **Group by** — `Status`, `Priority`, `Assignee`, or `Project`. Completed and canceled groups start collapsed so finished work stays out of the way. - **Sort** — `Priority`, `Due date`, `Newest`, or `Recently updated`. Your grouping, sorting, and filters are remembered per team. ### Filters The filter bar works the same on the list and the board: | Filter | Options | |---|---| | Status | The team's workflow statuses | | Priority | Urgent, High, Medium, Low, No priority | | Assignee | Unassigned or any team member | | Label | Any workspace label | | Project | No project or any team project | Values inside one filter are OR'd together; different filters combine with AND. **Clear** removes everything at once. ### Bulk edits 1. Hover a row and tick its checkbox — `Shift`-click extends the selection across a range. 2. A bar appears with the count and pickers for **Status**, **Priority**, and **Assignee**, plus a label picker and a delete button. 3. Pick a value and it applies to every selected issue. Two things to know: the bulk label picker only *adds* labels (it never removes), and bulk delete cannot be undone — single-issue edits support `⌘Z` undo, bulk deletes don't. ## The Board **Board** shows the same issues as columns. The **Group by** choice decides what the columns are — and therefore what a drop changes: | Grouped by | Dropping a card… | |---|---| | Status | Moves it to that workflow status | | Assignee | Reassigns it | | Priority | Reprioritizes it | | Project | Moves it into that project | Cards show the priority, issue key, assignee, title, due date, estimate, and label dots. Dragging within a column reorders it. ## Keyboard shortcuts | Keys | Action | |---|---| | `C` | New issue | | `⌘K` | Command palette / search | | `G` then `I` / `A` / `B` / `P` / `C` | Go to My Issues / All Issues / Board / Projects / Cycles | | `⌘Z` / `⌘⇧Z` | Undo / redo the last edit | | `?` | Show all shortcuts | | `Esc` | Close the panel or dialog | ## Frequently asked questions ### Why can't I multi-select on the Board? The board is for dragging — one card, one change. Multi-select and the bulk bar live on the **Issues** list, which shows the same issues in the same groupings. # Cycles Time-boxed sprints with automatic status and progress tracking. Canonical: https://easerix.com/docs/tasks/cycles <Answer> Cycles are time-boxed sprints for a team. Create one from the Cycles page — the dates default to two weeks — then add issues through each issue's Cycle property. Tasks computes the cycle's status from its dates and tracks progress as issues reach a completed status. </Answer> ## Start a cycle 1. Open **Cycles** in the sidebar and choose **New cycle**. 2. Optionally name it — unnamed cycles are numbered automatically (`Cycle 3`). 3. Set **Starts** and **Ends**. The form suggests a two-week window starting today; any dates work. 4. Choose **Start cycle**. ## Put issues in the cycle Set the **Cycle** property on an issue — from the New issue composer, the issue page, or the side panel. Sub-issues inherit their parent's cycle automatically, so breaking down a scheduled issue keeps the pieces in the sprint. ## Reading the Cycles page Each cycle row shows its dates, a status chip, and progress: | Chip | Meaning | |---|---| | **Upcoming** | The start date is in the future | | **Active** | Today is between the start and end dates | | **Completed** | The end date has passed | | **Planned** | Dates haven't been set | Status comes straight from the dates — there's nothing to update by hand. Progress counts issues whose status is a completed one (canceled issues don't count as done). ## Frequently asked questions ### Can I edit a cycle after starting it? Not yet — a cycle's name and dates are fixed at creation, so double-check the window before you start it. Issues can move in and out of a cycle at any time via their Cycle property. # Tasks FAQ Quick answers on keys, workflows, assignees, attachments, notifications, and undo. Canonical: https://easerix.com/docs/tasks/faq <Answer> Quick answers about Easerix Tasks: issue keys, workflow statuses, assignees, attachments, notifications, undo, and the free plan. If you're new, start with the quickstart; for a property-by-property breakdown of an issue, see the issue anatomy page. Everything here reflects what's in the product today. </Answer> ## Frequently asked questions ### What do issue keys like ENG-12 mean? The prefix is the team's key — chosen when the team is created, 1–6 letters or digits — and the number counts up within that team. Keys are permanent; renaming an issue never changes its key. ### Can I customize workflow statuses? Every team starts with **Backlog → Todo → In Progress → Done → Canceled**. Custom workflows aren't editable in the app yet. ### How many people can be assigned to an issue? One. Use sub-issues to split work across several people — the parent issue shows combined progress. ### When do I get notified? The bell in the top bar lights up when someone assigns an issue to you, and when someone comments on an issue you created or are assigned to. What you're notified about — and how — is managed once in Account settings and applies across every Easerix tool. ### What can I attach, and how big? Any file up to **15 MB**, via the **Attach** button, paste, or drag-and-drop in a description or comment. Images show as thumbnails; everything else appears as a named file chip. ### Can I undo a change? `⌘Z` undoes your last edit and `⌘⇧Z` redoes it — including bulk status, priority, assignee, and label changes. Deletes are the exception: deleting issues (singly or in bulk) cannot be undone. ### Where do labels come from? Manage them from the **Labels** card in Settings — name and color. Apply them from any issue's **Labels** property, then filter by them on the list and board. ### How much does Tasks cost? The free plan includes unlimited issues on 2 teams. ## Keep going - [Set up a team and your first issues](/tasks/quickstart) - [Board and views](/tasks/board-and-views) - [Anatomy of an issue](/tasks/issues) - [Cycles](/tasks/cycles) # Tasks Issue tracking with teams, projects, cycles, a drag-and-drop board, and keyboard-first workflows. Canonical: https://easerix.com/docs/tasks <Answer label="What is Easerix Tasks"> Easerix Tasks is an issue tracker built for momentum: organize work into teams, group issues into projects and time-boxed cycles, and move them across a drag-and-drop board. Issues carry priorities, assignees, labels, due dates, estimates, and sub-issues. It's part of the Easerix suite, so it shares one login and workspace with every other tool. </Answer> ## What you can do | Capability | In short | |---|---| | Teams | Each team has its own issue key (`ENG-12`) and workflow statuses | | Issues | Priority, assignee, labels, due date, estimate, sub-issues | | Board | Drag between columns grouped by status, assignee, priority, or project | | Views | Group, sort, and filter the issue list; edit many issues at once | | Projects | Bundle issues toward a goal, with a lead, target date, and progress | | Cycles | Time-boxed sprints with automatic status and progress | | Discussion | Comments plus an activity feed on every issue | | Attachments | Paste, drop, or attach files on descriptions and comments | | Notifications | A bell in the top bar for assignments and comments | | Keyboard-first | `⌘K` command palette and shortcuts for everything common | ## Work with Tasks from anywhere - **MCP** — AI clients connected to `mcp.easerix.com` get Tasks tools to list teams, list issues, and create issues. - **CLI** — `easerix tasks teams`, `easerix tasks issues`, and `easerix tasks create` from your terminal. - **Notifications** — assignment and comment alerts arrive in the shared Easerix notification bell; tune them once in Account and it applies everywhere. ## Next steps - [Set up a team, a project, and your first issues](/tasks/quickstart) - [Master the board, views, and bulk edits](/tasks/board-and-views) - [Everything an issue can carry](/tasks/issues) - [Run work in cycles](/tasks/cycles) - [Frequently asked questions](/tasks/faq) ## Frequently asked questions ### What do the issue keys mean? Every issue gets a key like `ENG-12`: the prefix is the team's key (you pick it when creating the team, 1–6 letters or digits) and the number counts up per team. Keys never change, so they're safe to reference in commits and chats. ### How many issues can I create? The free plan includes unlimited issues on 2 teams. ### Can several people be assigned to one issue? Each issue has a single assignee. To split work across people, break it into sub-issues and assign each one. # Anatomy of an issue Every property, plus sub-issues, comments, activity, and attachments. Canonical: https://easerix.com/docs/tasks/issues <Answer> An issue is a title and description plus a rail of properties — Status, Priority, Assignee, Project, Cycle, Due date, Estimate, and Labels — with sub-issues, comments, an activity feed, and attachments underneath. Every issue gets a permanent key like ENG-12, built from its team's key. </Answer> ## Keys and where issues open Issues are identified as `<TEAM KEY>-<number>`, like `ENG-12`. Clicking an issue anywhere opens a docked side panel for quick edits; **Open full page** takes you to the full view with the activity feed. `Esc` closes the panel. ## Properties | Property | What it does | |---|---| | **Status** | The issue's place in the team workflow — new teams start with Backlog, Todo, In Progress, Done, and Canceled | | **Priority** | Urgent, High, Medium, Low, or No priority | | **Assignee** | One person owns the issue; unset shows as Unassigned | | **Project** | The project it belongs to, if any | | **Cycle** | The sprint it's scheduled into — see [Cycles](/tasks/cycles) | | **Due date** | A calendar date; overdue issues get a red countdown chip | | **Estimate** | Points: 1, 2, 3, 5, or 8 | | **Labels** | Tags for filtering; manage them from the Labels card in Settings | Moving an issue to a completed status timestamps it as done — that's what drives project and cycle progress bars. ## Title and description Both edit in place: click, type, and it saves. The description supports **Markdown** — headings, lists, links, quotes, tables, code, and inline images. The composer has a formatting toolbar and a **Preview** tab, so you never have to write raw Markdown if you don't want to. ### Checklists in the description Type `[] item` (or GitHub-style `- [ ] item`) on its own line and it renders as a real checkbox — `[x]` starts it checked. Click a checkbox to toggle it right from the rendered description; no need to open the editor. Checked items show struck through, and checklists nest with two-space indents. ``` Launch checklist: [] draft the announcement [x] book the demo environment - [ ] final QA pass ``` The same Markdown works in **comments** (checkboxes there are display-only — edit the comment to change them). ## Sub-issues Break work down without losing the thread. 1. On the issue, choose **Add sub-issue** and type a title — `Enter` creates it. 2. Sub-issues inherit the parent's project and cycle, and get their own keys. 3. The parent shows a `done/total` progress bar; each child links back to its parent with a breadcrumb chip. ## Comments and activity - **Comments** support Markdown; you can edit or delete your own, and edited comments are marked `(edited)`. - The **Activity** section on the full page merges comments with every property change — who moved it, reprioritized it, assigned it, and when. - `⌘Enter` submits a comment. ## Attachments Attachments ride along with descriptions and comments: - Click **Attach** in the composer toolbar to pick images, or **paste** / **drag and drop** any file straight into the text. - Files up to **15 MB** each. Images render as thumbnails on the issue; other files appear as named chips. ## Frequently asked questions ### Can an issue have more than one assignee? No — one assignee per issue keeps ownership unambiguous. When several people share a piece of work, split it into sub-issues and assign each one; the parent tracks combined progress. # Set up a team and your first issues From empty workspace to a working team with a project and tracked issues. Canonical: https://easerix.com/docs/tasks/quickstart <Answer> Open Tasks in the Easerix app, create a team with a short key like ENG, add a project for the work ahead, then press C to create your first issues — each gets a key like ENG-1 and lands in the team's workflow, ready to assign and prioritize. </Answer> ## 1. Create a team Your workspace starts with a **General** team, but most people create their own right away. 1. Open **Tasks** in the Easerix app ([app.easerix.com](https://app.easerix.com)). 2. Click the team switcher at the top of the sidebar and choose **New team**. 3. Give it a name and a **key** — 1–6 letters or digits, like `ENG`. The key becomes the issue prefix (`ENG-12`). 4. Choose **Create team**. New teams start with the default workflow: **Backlog → Todo → In Progress → Done → Canceled**. ## 2. Create a project Projects bundle related issues toward a shared goal. 1. Open **Projects** in the sidebar and choose **New project**. 2. Name it and add a description of what it's about. 3. Optionally set a **Status** (Planned, In Progress, Paused, Completed, Canceled), a **Lead**, and a **Target date**. 4. Choose **Create project**. ## 3. Create your first issues 1. Press `C` anywhere — or click **New issue** — to open the composer. 2. Type a title, then set **Status**, **Priority**, **Assignee**, and **Project** from the property row. 3. Choose **Create issue**. Repeat for the next few pieces of work; issue creation is built to be fast. ## Verify it works - **My Issues** shows everything assigned to you, grouped by status. - **Board** shows the team's workflow as columns — drag an issue to **In Progress** and its status updates instantly. - The project's card on **Projects** starts tracking progress as issues get done. ## Good to know - `⌘K` opens the command palette — search issues or jump anywhere; press `?` for all keyboard shortcuts. - Issues assigned to someone notify them through the bell in the top bar. - Sub-issues created under an issue inherit its project and cycle automatically. # What the copilot can do Every action the Easerix AI copilot can take across Links, CronCrunch, Sign, Notes, and CRM — and how destructive actions are confirmed. Canonical: https://easerix.com/docs/platform/copilot <Answer label="What the Easerix copilot can do"> The copilot in the Easerix portal takes real actions across your tools: it creates short links, tracks time, drafts and sends documents for signature, searches your notes, and manages CRM deals. It acts with your permissions, and anything destructive only happens after you click an explicit confirmation button. </Answer> The copilot lives at [app.easerix.com](https://app.easerix.com). You ask in plain language; it picks from a fixed catalog of actions — nothing outside this list — and pulls live numbers before quoting any figure. ## Across the suite | Action | What it does | |---|---| | Portal summary | Fetches your live cross-tool numbers: total link clicks, documents awaiting signature, hours tracked this week (total, billable, and amount), and any running timer | | Open an app | Surfaces a button that takes you straight into the right tool | ## Links | Action | What it does | |---|---| | Create a short link | New `esrx.ly` link, with an optional custom code and title | | List your links | Your links with click counts | | Get a link's stats | Click history for one link | | Update a link | Change a link's destination or title | | Delete a link | Permanently removes a short link — **confirmation required** | ## CronCrunch | Action | What it does | |---|---| | Create a project | New time-tracking project | | Start a timer | Starts the clock on a project (offers to create the project if none exist) | | Stop the timer | Stops whatever is running | | Log time | Records a past time entry | | List projects | Your projects | ## Sign | Action | What it does | |---|---| | List documents | Your documents and their signing status | | Get a document | Status and recipients for one document, found by name | | Draft an agreement | Writes a new agreement as a prepared draft with signing slots | | Send for signature | Emails real signature requests to named recipients — **confirmation required** | | Remind signers | Re-emails everyone still holding up a pending document | | Void a document | Cancels a draft or pending document; signing links stop working — **confirmation required** | ## Notes | Action | What it does | |---|---| | Search notes | Finds pages in your knowledge base | | Read a page | Reads one page's content | | Create a page | New page with a title and content | | Append to a page | Adds to the end of an existing page | ## CRM | Action | What it does | |---|---| | Pipeline summary | Your deals by stage, with values | | Create a contact | New contact (name, email, title…) | | Create a company | New company | | Create a deal | New deal, e.g. "Acme — annual plan" | | Move a deal | Advances a deal to another pipeline stage | | Log an activity | Records a note, call, email, or meeting on a contact, company, or deal's timeline | | Delete a deal | Permanently removes a deal — **confirmation required** | ## How destructive actions are confirmed The copilot never deletes, sends, or voids anything on its own. For the four actions marked above, it prepares the action and shows you a button naming the exact target — *Delete esrx.ly/launch*, *Send "NDA" to jane@acme.com*, *Void "Office lease"* — and nothing happens until you click it. Under the hood the button carries a signed token bound to that exact action and target, so a click can only ever do precisely what the button says. The button expires after 10 minutes; after that the copilot has to prepare the action again. ## The honest scope Today the copilot **acts** inside Links, CronCrunch, Sign, Notes, and CRM, plus the cross-tool portal summary. For **Tasks** and **Forms** it can open the app for you, but it has no read or write actions in them yet. ## Frequently asked questions ### Can the copilot delete something without asking? No. Destructive actions (deleting links or deals, sending documents for signature, voiding documents) always end in a confirmation button that you must click — the copilot cannot press it for you, and it's told not to claim the action is done until you do. ### Whose data does the copilot see? Yours. Every action runs with your own sign-in, so the copilot can only read and change what you could read and change yourself in the apps. ### Can it manage my tasks or forms? Not yet — for Tasks and Forms it can only take you into the app. Its action catalog covers Links, CronCrunch, Sign, Notes, and CRM today. ### Does it make up numbers? It's built not to: before quoting clicks, hours, or pending signatures it fetches your live numbers, and if the numbers don't come back it points you at the app instead of guessing. # Verified domains Claim your company's email domain so colleagues can find — or automatically join — your organization. Canonical: https://easerix.com/docs/platform/domains <Answer label="What verified domains do"> An owner or admin claims the company's email domain, proves ownership with a DNS TXT record, and Easerix then connects new signups with matching email addresses to the organization — either suggesting it to them, or adding them automatically as members if auto-join is switched on. </Answer> ## Claim and verify a domain You need the owner or admin role. Public email providers (gmail.com and friends) can't be claimed. 1. Open [account.easerix.com](https://account.easerix.com), pick your organization, and open **Domains**. 2. Click **Add domain** and enter the domain, e.g. `acme.com`. 3. Easerix shows a **TXT record** — a name and a value, each with a copy button. Add it at your DNS provider. 4. Back in the dialog, click **Check now**. DNS usually propagates within minutes; if the check fails, wait a little and try again (**Later** keeps the domain listed as *awaiting DNS verification* so you can come back). ## Suggest vs auto-join Once a domain is verified, a single **auto-join** toggle on the Domains page picks between two modes: | Mode | Toggle | What happens | |---|---|---| | Suggest (default) | off | Users signing up or signed in with a matching email address are offered the organization — joining stays their choice. | | Auto-join | on | New users signing up with a verified matching email are added to the organization automatically, as **member**. | Either way, domains only affect how people *find and join* the organization. Existing members are never touched, and nobody is ever pulled out of their personal workspace — see [Organizations and teams](/platform/orgs-and-teams#your-personal-workspace). Domain activity is recorded in the organization's [audit log](/platform/security#the-organization-audit-log): claimed, verified, joining mode changed, and removed. ## Removing a domain Click the remove button next to the domain. New teammates with that email domain stop being offered the organization; existing members are unaffected. ## Frequently asked questions ### What DNS record do I need? A single TXT record. The Domains page shows the exact name and value to copy into your DNS provider, and verifies it with **Check now**. ### Does switching on auto-join add everyone who already has a matching email? No. Auto-join applies to **new** signups with a verified matching email. People who already have accounts see the organization suggested and choose to join. ### What role do auto-joined people get? Always **member**. An admin can raise their role afterwards from the Members page. ### Can I claim gmail.com or another public provider? No — public email providers are blocked, since a domain claim is a statement that your organization owns the domain. # Notifications The notification bell, what each Easerix tool notifies you about, and how to tune it per category. Canonical: https://easerix.com/docs/platform/notifications <Answer label="How Easerix notifications work"> One bell in the app collects notifications from every Easerix tool, updating live with an unread badge. You tune what you receive per category — issue assignments, form submissions, signature requests, and more — from a single preferences page, and each choice applies everywhere: web bell, email, and mobile push. </Answer> ## The bell The bell sits in the header at [app.easerix.com](https://app.easerix.com). It shows a live unread count (no refresh needed) and opens a feed of items from every tool — clicking an item marks it read and takes you straight to the issue, page, document, or submission it's about, whichever tool it lives in. **Mark all read** clears the badge in one click. ## What the suite can notify you about Preferences live at [account.easerix.com](https://account.easerix.com) → **Notifications** — one screen for the whole suite, one toggle per category: | Tool | Category | Fires when | |---|---|---| | Tasks | Assigned to you | An issue is assigned to you | | Tasks | Comments | Someone comments on your issue | | Notes | Comments | Someone comments on a page you own | | Forms | New submissions | A form endpoint receives a submission | | Sign | Awaiting your signature | A document is waiting on you to sign | | Sign | Document activity | A recipient views, signs, or declines | | CronCrunch | Timer reminders | A timer has been running a long time | Every category is on by default. Toggles save immediately. ## Channels A category toggle is channel-wide: switching a category off stops it on the web bell, by email, and on mobile push alike. Emails go to your account's email address. ## Frequently asked questions ### Are notification preferences per organization? No — they're account-wide. One set of preferences follows you across your personal workspace and every organization. ### Can I keep the bell but stop the emails? Not per channel today. Preferences are per category, and each category applies to all channels at once. ### Why did I get a notification for a tool I rarely use? The feed is platform-wide by design — a Sign request or Forms submission reaches you even while you're working elsewhere. Switch that category off under **Notifications** if you don't want it. ### Do notifications work on mobile? Yes — the Easerix mobile app receives push notifications, governed by the same category preferences. # Organizations and teams Roles, invitations, teams, and how your personal workspace relates to the organizations you join. Canonical: https://easerix.com/docs/platform/orgs-and-teams <Answer label="How organizations work in Easerix"> An Easerix organization is a shared workspace with four roles — owner, admin, billing, and member — and optional teams inside it, each with leads and members. You always keep a private personal workspace alongside every organization you join, and you switch between them without signing out. </Answer> New to Easerix? [Getting started](/getting-started) covers signing up and creating your first organization. This page goes deeper: what each role can do, how invitations work, and what teams are for. Everything here lives at [account.easerix.com](https://account.easerix.com). ## Roles Every member of an organization has exactly one role. Roles map to permissions, and both the apps and the APIs check permissions the same way. | What you can do | owner | admin | billing | member | |---|---|---|---|---| | Use enabled tools, see the member directory | ✓ | ✓ | ✓ | ✓ | | Create teams (and lead the teams you create) | ✓ | ✓ | — | ✓ | | Invite members, change roles, remove members | ✓ | ✓ | — | — | | Manage all teams, tool access, org profile, domains | ✓ | ✓ | — | — | | See the org audit log | ✓ | ✓ | — | — | | Manage billing | ✓ | — | ✓ | — | | Delete the org, transfer ownership | ✓ | — | — | — | Two guardrails: admins can't change an owner's role or promote anyone to owner, and the last owner can never be removed or demoted. ## Invite people Open your organization's **Members** page and click **Invite**. There are two ways in: 1. **Email invitations** — enter one or more addresses (comma-separated), pick a role (**member** or **admin**), and click **Send invites**. Invitees land in the organization in one click; people who don't have an Easerix account yet sign up straight into it — their own personal workspace is still created alongside. 2. **Shareable invite link** — click **Create invite link** and copy the URL. Anyone with the link joins as a **member** (link invites can't grant admin). The Members page shows how many people have joined through it. Pending email invitations and active links are listed under **Pending invitations**, where you can **Revoke** either at any time. You can also let colleagues find the organization by their email domain — see [Verified domains](/platform/domains). ## Teams Teams group people inside an organization — a unit tools can share work with. - **Anyone in the org can create a team** (org → **Teams** → **New team**). The creator becomes its **lead**. - Team roles are **lead** and **member**. A lead manages the team's membership; org owners and admins can manage every team. - Deleting a team removes its membership for everyone but doesn't touch any tool data that referenced it. ## Switching workspaces The workspace switcher at the top of [app.easerix.com](https://app.easerix.com) lists **Personal** plus every organization you belong to (you can create an organization right from it). Switching changes which workspace's data every tool shows; your session stays signed in throughout. ## Your personal workspace Every account has one personal workspace, created automatically at signup. It behaves differently from an organization on purpose: - **It's yours alone** — it has no members and cannot be shared, so it has no invites, teams, or domains. - **Every tool is always on** — [tool access](/platform/tool-access) toggles only apply to organizations. - **Joining an organization never costs you anything** — your personal workspace stays in the switcher no matter how many orgs you join or leave. - **It can't be deleted on its own or converted into an organization** — it only goes away if you delete your whole account, and sharing work means creating an organization instead. ## Frequently asked questions ### Can I belong to several organizations? Yes, with a different role in each. The workspace switcher lists them all, and switching never signs you out. ### What happens to someone who's removed from an organization? They lose access to that organization's shared resources immediately. Their personal workspace — and their membership in any other organization — is unaffected. ### Can a regular member invite people? No. Inviting, changing roles, and removing members require the owner or admin role. Members can create teams, though. ### Can I move my personal work into an organization? There's no bulk conversion — the personal workspace can't become an org. Create an organization, switch to it, and create the work you want to share there. ### Who can change who's an owner? Only an owner. Admins manage members but can't touch owners or grant the owner role, and the last owner can't be removed or demoted. # Security Sign-in options, active sessions, the organization audit log, API keys, and connected apps. Canonical: https://easerix.com/docs/platform/security <Answer label="Security in Easerix"> You sign in once with a password or an emailed magic link and that session works across every tool. From account.easerix.com you can review and revoke active sessions, manage API keys and connected apps, and — as an owner or admin — read an audit log of everything done in your organization. </Answer> ## Password and magic link Both sign-in methods live at [login.easerix.com](https://login.easerix.com): - **Magic link** — enter your email and click the link you receive. Accounts created this way don't need a password at all. - **Password** — set or change it at [account.easerix.com](https://account.easerix.com) → **Security & sessions**. New passwords must be at least 8 characters. If your account is magic-link only, leave the current-password field empty when setting your first password. ## Active sessions **Security & sessions** lists every device where you're signed in — the platform and browser, when it signed in, and which session is newest. Clicking **Revoke** next to a session signs that device out within minutes. If you see a device you don't recognize, revoke it and change your password. ## The organization audit log Owners and admins see an **Audit log** page under each organization: the last 100 actions across every Easerix tool in that organization, filterable by tool. Each entry names the action and when it happened; actions taken by a credential rather than a browser session carry a badge — **via API key**, **via connected app**, **via CLI**, or **automatic**. What it records: | Area | Events | |---|---| | Organization | created, profile updated, deleted | | Membership | joined, joined automatically by email domain, left, member removed, role changed | | Invitations | invitation sent, invite link created, invitation revoked | | Teams | created, updated, deleted, team member added/removed | | Access | tool access changed | | Credentials | API key created/revoked, app authorized/disconnected | | Domains | claimed, verified, joining mode changed, removed | | Product data | deletions (links, forms, documents, templates, clients, projects, issues, pages), sharing/visibility changes, and exports of links or click logs | The product-data list is deliberately narrow: what was destroyed, what was shared more widely, and what left the platform. ## API keys - **Personal keys** — [account.easerix.com](https://account.easerix.com) → **API keys**. - **Organization keys** — under the organization → **API keys** (owners and admins). Key creation and revocation are audit-logged, and anything a key does shows up in the audit log tagged *via API key*. Keys deliberately can't manage your identity: account deletion, password changes, sessions, and key management require a full browser session, so a leaked key can't lock you out or mint more keys. ## Connected apps **Connected apps** lists the apps and agents you've authorized through Easerix sign-in — an MCP client, the CLI. Each connection is bound to one workspace, and you can disconnect any of them at any time. ## Deleting your account At the bottom of **Security & sessions**, the danger zone. Deleting your account permanently removes your account, your personal workspace, and all sessions — there is no undo. Organizations you solely own must be transferred or deleted first. ## Frequently asked questions ### I forgot my password — what now? Sign in with a magic link at [login.easerix.com](https://login.easerix.com), then set a new password under **Security & sessions**. ### Who can read the audit log? Organization owners and admins. There is no audit log for a personal workspace — it has no members to audit. ### Do regular members' actions appear in the audit log? Yes — the log covers the recorded actions of everyone in the organization, whoever performed them and however they authenticated. ### Does revoking a session sign the device out instantly? Within minutes — the session can no longer renew itself, so the device signs out as soon as its current short-lived token runs out. # Tool access Turn Easerix tools on or off per organization, and what members see when a tool is switched off. Canonical: https://easerix.com/docs/platform/tool-access <Answer label="How tool access works"> Every Easerix tool is on by default for every organization. Owners and admins can switch individual tools off from the organization's Tool access page — the tool disappears from the launcher for all members and its APIs refuse the organization's requests. Personal workspaces always have every tool on. </Answer> ## Where to find it Open [account.easerix.com](https://account.easerix.com), pick your organization in the sidebar, and open **Tool access**. You need the owner or admin role to change the toggles; everyone else sees the current state. ## The tools you can toggle | Tool | What it is | |---|---| | Tasks | Projects & issues | | CRM | Contacts, deals & pipeline | | Sign | Document signing | | Notes | Knowledge base | | Links | Short links & analytics | | Forms | Form backend | | CronCrunch | Time tracking | | Revpian | Finance & invoicing | ## What happens when a tool is off Switching a tool off has two effects for that organization: 1. **It's hidden from the launcher** — members no longer see it at [app.easerix.com](https://app.easerix.com) while that organization is the active workspace. 2. **Its APIs refuse the organization's requests** — the block is enforced server-side, not just visually, so API keys and integrations acting in that organization are refused too. Changes land within minutes, and every toggle is recorded in the organization's [audit log](/platform/security#the-organization-audit-log) as "changed tool access". Nothing is deleted. Switching a tool off only gates access — turn it back on and the organization's data in that tool is exactly where it was. ## Frequently asked questions ### Does turning a tool off delete its data? No. It hides the tool and blocks org-scoped requests. Re-enable the tool and everything is back. ### Can I turn tools off in my personal workspace? No — personal workspaces always have every tool on. Tool access is an organization-level control. ### Can a tool be off for some members and on for others? Not today. Tool access is per organization: on for everyone or off for everyone. Within a tool, what someone can see is governed by sharing and [roles](/platform/orgs-and-teams#roles). ### A member says a tool vanished from their launcher — why? Most likely an admin switched it off for the active organization, or the member switched workspaces. Have them check the workspace switcher first, then ask an admin to check Tool access. # API reference Endpoint-by-endpoint REST reference for every Easerix tool, generated from the OpenAPI specs. Canonical: https://easerix.com/docs/developers/api <Answer label="What this is"> The complete REST reference for the Easerix APIs, generated from the same OpenAPI 3 specifications the services are built and CI-verified against. Browse per-endpoint pages with schemas and example requests, or download a raw spec and generate a typed client in your language of choice. </Answer> All endpoints use Bearer authentication with a short-lived access token — see the [developer overview](/developers/overview) for how to get one from an API key, plus base URLs and the error shape. ## APIs | API | Base URL | Reference | Raw spec | |---|---|---|---| | Auth & accounts | `https://auth.easerix.com` | [Browse](/developers/api/auth) | [auth.v1.yaml](/openapi/auth) | | Tasks | `https://api.easerix.com/tasks` | [Browse](/developers/api/tasks) | [tasks.v1.yaml](/openapi/tasks) | | Notes | `https://api.easerix.com/notes` | [Browse](/developers/api/notes) | [notes.v1.yaml](/openapi/notes) | | Sign | `https://api.easerix.com/sign` | [Browse](/developers/api/sign) | [sign.v1.yaml](/openapi/sign) | | Links | `https://api.easerix.com/links` | [Browse](/developers/api/links) | [links.v1.yaml](/openapi/links) | | Forms | `https://f.easerix.com` | [Browse](/developers/api/forms) | [forms.v1.yaml](/openapi/forms) | | CronCrunch | `https://api.easerix.com/croncrunch` | [Browse](/developers/api/croncrunch) | [croncrunch.v1.yaml](/openapi/croncrunch) | | Notifications | `https://notifications-api.easerix.com` | [Browse](/developers/api/notifications) | [notifications.v1.yaml](/openapi/notifications) | The raw specs are standard OpenAPI 3 YAML — point `openapi-generator`, `oapi-codegen`, Postman, or any other spec-aware tool at them directly.