Stitchwork Docs

Glossary

Every Stitchwork term, cookie, key prefix and status value, alphabetically.

Terms

access state
Whether a workspace may be used: trial, active, suspended or closed. Set on your account and evaluated on every request. See access.
agent (MCP)
A headless principal — a bot or script the workspace runs, holding its own MCP seat and mcp_live_ token. Unlike a team member's seat, its channel reach is set explicitly when it is created.
assistant
Ask Stitchwork — the assistant on every page, running on Claude. It reads what the person asking can read, drafts messages a person sends, and proposes notes and follow-ups that wait for approval. Metered in credits. See The assistant.
associate
The person on the team who looks after a client. Follow-ups about that client — and the reminders for their dates — go to them first. A member can take an unassigned client or hand back their own; an owner or admin can assign anyone; somebody leaving the team hands their clients back. See the client book.
affinity
A per-customer, per-product counter of views, cart adds and quote appearances. It is what makes recommendations personal.
attribution snapshot
A frozen copy of a visitor's ad-touch trail — {first_touch, last_touch, touch_count} — stamped onto a quote or an order at creation, so the conversion keeps its source even if identity is later reassigned.
credit (assistant)
A penny's worth of assistant use at list price. A monthly allowance comes with the plan; more can be bought and never expires. See credits.
credited orders
Fractional order credit on the attribution report. Each sale contributes exactly 1.0, split across the touches that preceded it by the chosen model — so a row reading 0.60 took most of the credit for one sale, or a share of several. Credited orders across all rows add back up to the number of attributed sales.
conversion window
How far back before a sale a touch may sit and still get credit (conversion_window_days, 1–365, default 90). Distinct from the report's date range, which picks which sales are counted.
half-life
How fast time_decay credit falls off with distance from the sale (half_life_days, 1–90, default 7). A touch one half-life before the sale earns half the raw weight of one on the day. No other model reads it.
bestseller metric
What the bestseller signal counts: units (quantity sold, the default) or revenue (line value). Changes which products win, not how strongly the signal applies. Takes effect at the next recompute.
bestseller window
How far back sales count towards the bestseller signal. 365 days by default.
category balance
A 0–1 dial that interleaves recommendation output across categories. 0 is pure relevance; 1 is strict round-robin.
channel
A surface you sell through: website, store, kiosk, pop-up, marketplace, wholesale. Quotes and orders both belong to one.
channel role
Per-channel permission: admin, manager or associate. Independent of the workspace role.
client book
The customer list read as whose clients they are — everyone's, my clients, or unassigned — with tags and the associate on every row. See the client book.
configurable product
A product with option axes, whose variants are generated from their cartesian product.
conversion window
How far before a conversion an ad touch can sit and still get credit. 90 days by default, 1–365 allowed.
delivery
One attempt-tracked row pairing a webhook event with a subscription. Statuses: pending, succeeded, failed, dead.
event
One recorded action by a visitor: a page view, product view, cart add, search, purchase, QR scan or campaign arrival.
featured
A manual per-product flag that lifts it in the ranking. Weighted at 2.0 by default and applied outside the personalisation blend, so it lifts for everyone.
follow-up
An obligation: a customer, a person who owes them something, a day it is owed by, the reason, and afterwards the outcome. One open per customer at a time, enforced in the database. See Follow-ups.
holdout
The share of visitors who match a nudge's rule and are shown nothing, so the message can be measured against them. 10% by default, 0–50% allowed. A held-back visitor gets exactly what a non-matching visitor gets.
join code
A single-use, five-minute code minted by a public quote page so a customer's phone can be linked to their customer record through your join endpoint.
join endpoint
A small route on your domain that completes the in-store handoff. It has to be your domain, because that is the only place your own first-party cookie can be read. Provided and set up with you during onboarding.
lift
The difference in conversion between a nudge's shown arm and its holdout — the only figure in that feature that is about the message rather than about who it was aimed at. Reported as better, worse, inconclusive, no_difference, counting or unmeasured.
MCP
The Model Context Protocol — how an AI client reads a workspace through POST /mcp. Stitchwork negotiates every protocol revision from 2024-10-07 to 2026-07-28 and exposes thirty-one tools, of which three write and all of them only append. See AI agents.
MCP seat
One person or agent granted MCP access, billed as a per-seat add-on. Granted only by an owner or admin in Settings → MCP — connecting an AI client cannot create one. Revoking kills every token under it on the next request.
line item
One row on a quote or an order. Snapshots its description, SKU and unit price, so later catalogue edits never rewrite a sent quote.
nudge
A short message shown across the top of the merchant's own site to a visitor whose browsing matched a rule. Rendered by the tracking tag, capped per visitor, and always measured against a holdout. See Nudges.
option
An axis of choice on a configurable product — wood, size, colour. 1–40 lowercase letters, digits or underscores.
organisation
One brand's workspace. The isolation boundary — everything else hangs off it.
owner
The user who created the workspace. Exactly one, and the only role that can edit the catalogue, run imports, delete records or set up payments.
personalisation strength
A 0–1 dial blending global ranking against the per-customer overlay. 0.5 by default.
public token
A 32-character unguessable string on every quote. It is the authentication for /q/{token}.
quote
A proposal: channel, customer, lines, totals, and a link only the customer has.
recompute
Rebuilding the stored global ranking signals. Triggered by hand, or automatically after an order import.
reason to get in touch
A follow-up the nightly sweep raises on its own: a date coming up, a delivery to check on, a missed appointment, a quote about to lapse. Each moment raises one, once, on the associate's list; each kind can be switched off in Settings › Retention. See Follow-ups.
data isolation
Your workspace's records are separated at the database itself, not only by a filter in application code. See Data isolation.
dates that matter
A client's birthday, anniversary or another date ("Moving in"), with or without the year. The nightly sweep raises a follow-up ahead of each — a week by default. See reasons to get in touch.
signal
One input to the ranking score. Seven global (bestseller, popular, carted, newness, featured, price target, on sale) and three personal (view, cart, quote).
simple product
One thing, one price. Gets exactly one auto-created variant, so every product has at least one.
SKU
The join key between your systems and Stitchwork. Matched against product SKUs first, then variant SKUs; a variant SKU always rolls up to its parent as well.
slug
A URL-safe workspace identifier, used in the tracking tag URL. Never changes when you rename the workspace.
stitching
Linking an anonymous visitor to a named customer, which retroactively attributes their entire browsing history.
settled (follow-up)
Work that retired itself: the customer bought before anybody contacted them, so Stitchwork closed the follow-up. Counted apart from a dismissal — nobody judged it — and it names no closer, so it can never earn sales credit. See when the customer answers it themselves.
sales credit
The split of one sale across the people who earned it: opener 40%, closer 40%, anyone in between shares 20%. Earned by raising a quote, holding an appointment or closing a follow-up — never by activity alone. See Sales credit.
saved reply
A message the shop writes every week — after a visit, "it has arrived" — kept once by an owner or admin and picked from the composer on any customer, with {first_name}, {name}, {my_name} and {shop} filled in. The person sending still reads it first. See Messaging.
subscription
A webhook destination: one URL, one event filter, one signing secret. Not to be confused with the self-serve plan, which is a subscription in the billing sense — see choosing a plan.
STOP
The reply that stops texts to a customer — on every record carrying that number — until they reply START. See Messaging.
tax inclusive
Quote mode where line prices already contain tax. The total equals the discounted subtotal; the tax figure is informational.
touch
One recorded ad arrival — UTM parameters or a click id — against a visitor.
variant
A specific purchasable combination of a product's options, with its own SKU, price and status. What quote and order lines point at.
visitor
One anonymous browser, identified by the __sw_v cookie. Becomes a known person when linked to a customer.
what we know
The facts a team keeps about a client — a ring size, a preferred finish, the room a piece is for — one value per label, with who last changed it. Read by the assistant before it drafts anything. See the client book.
Who to tell
The tab on a product that lists who should hear about it: customers who quoted, carted or looked at it, then those who keep browsing its category, never anyone who has bought it. The same list as the find_customers_for_product tool. See Catalogue.
workspace role
owner, admin or member. Separate from channel roles.

Key and id prefixes

PrefixWhat it isWhere it goes
pk_live_Public tracking keyBrowser. Authorization: Public …, or ?key= on public read endpoints.
sk_live_Secret tracking keyYour server only. Authorization: Bearer ….
mcp_live_MCP agent tokenA headless AI agent calling POST /mcp. Per-seat, read-only, shown once.
mcp_at_OAuth access tokenIssued to a connected MCP client (e.g. Claude). Hour-long, refreshed silently.
mcp_rt_OAuth refresh tokenRotates on every use; reuse of a rotated one revokes the whole chain.
mcp_ac_OAuth authorization codeSixty seconds, single use — the handoff between consent and a token.
mcp_client_OAuth client idAn application registered with the built-in authorization server.
whsec_Webhook signing secretYour webhook receiver. Shown once at creation and once per rotation.
evt_Webhook event idThe envelope's id and the Stitchwork-Event-Id header. Dedupe on this.
Q-YYYY-NNNNNNQuote numberHuman-facing. Unique per workspace per year.
acct_Stripe Connect accountThe merchant's own Stripe Express account.

Cookies

NameSet byLifetimePurpose
__sw_vThe tag2 years, slidingVisitor identity on your domain. Written only after consent.
__sw_channelThe tag30 min, slidingPhysical-channel attribution after a QR scan.
__sw_attrThe tag30 min, slidingDeduplicates campaign touches.
Session cookieThe app14 daysStaff authentication on the Stitchwork app itself. HttpOnly, SameSite=Lax.

URL markers

ParameterMeaningStripped?
_sw_chChannel id this scan belongs to.Yes
_sw_scanMarks the arrival as a QR scan.Yes
_sw_qrWhich specific QR code was scanned.Yes
utm_*, gclid, fbclid, msclkidCampaign attribution.No — your own analytics need them
joined, reasonResult of a QR join, on the return to the quote page.No

Status values

WhereValues
Workspace accesstrial, active, suspended, closed
Workspace roleowner, admin, member
Channel roleadmin, manager, associate
Channel typeweb, store, marketplace, kiosk, pop_up, wholesale
Channel ownershipowned, franchise, authorised, wholesale, marketplace
Channel statusactive, paused, closed
Product typesimple, variant, configurable
Product / variant statusdraft, active, discontinued
Quote statusdraft, sent, accepted, declined, expired, cancelled, paid
Quote discount typeamount, percent
Quote originapp, external
Order statusdraft, pending, abandoned, paid, partially_refunded, refunded, cancelled, fulfilled — what each one means
Order originapp, import, quote_conversion, external
QR kindproduct, channel_entry, custom
Event typepage_view, click, search, add_to_cart, view_product, purchase, qr_scan, campaign_touch, scroll_depth, custom
Consent modeauto, require, off
Follow-up statusopen, done, dismissed, settled — discarding removes the row instead
Nudge statusdraft, live, paused
Nudge CTAnone, button, email, phone
Nudge frequencyonce_per_visitor, once_per_session, every_n_days
Nudge armshown, holdout
Nudge verdictbetter, worse, inconclusive, no_difference, counting, unmeasured
Attribution modeltime_decay, linear, position_based, last_touch, first_touch
Attribution groupingsource, source_medium, campaign
Webhook deliverypending, succeeded, failed, dead

Headers

HeaderDirectionPurpose
Authorization: Public pk_live_…To StitchworkStorefront / browser calls.
Authorization: Bearer sk_live_…To StitchworkServer-to-server calls.
Authorization: Bearer mcp_live_…To StitchworkAn AI agent on POST /mcp.
Stitchwork-SignatureFrom Stitchworkt=<unix>,v1=<hex hmac-sha256>.
Stitchwork-Event-IdFrom StitchworkDedupe key for webhook deliveries.
Stitchwork-EventFrom StitchworkEvent type, for routing before parsing.
Stitchwork-AttemptFrom Stitchwork1-based attempt number.