Sable
Sponsored
Your design system shouldn't live in one person's head. Get your whole team into the same file and watch how fast the arguing stops.

sable.example
Built for design teams, not just designers
Free to start. Invite the whole team.
B2B SaaS
Find the right accounts, help more teams reach value, and know which work created pipeline and recurring revenue. Apex connects ads, product use, sales, messages, experiments, and partners from the first click to the renewal.
No credit card to start.
Find the right accounts
Apex joins ad clicks, website behavior, product usage, company fit, and account activity before a rep opens the form. Self-serve trials stay self-serve. High-value accounts reach sales while the interest is fresh.
What it made of Priya
scored in 40msEveryone else, sorted the same way
1,325 peopleTrials with no project yet
418 peopleSigned up in the last 14 days and hasn't created a project
Design leads at mid-size companies
Priya is in this one1,264 peopleJob title contains Design and the company has 100 to 500 people
Ready to add more people
96 peopleActivated, on the Team plan, and invited more than five people
Activate and expand
Welcome people across email, phone, browser, and your own app. Send self-serve and sales-assisted accounts down different paths. Run experiments on activation and expansion, not opens, then stop messaging the moment the account moves forward.
A full email in their inbox. Authored once, with Priya's attributes resolved from your schema.
Prove recurring revenue
Apex connects every ad, message, experiment, sales handoff, and partner to the account, contract, expansion, churn, and renewal. You'll see CAC, payback, lifetime value, and retention by source, with the full account story behind every number.

Priya Raman
priya@haldenstudio.com
$18,400
lifetime value
How she got here
every event, in the order it happenedCame in from a Facebook ad
go.sable.example/design-teams-q3 → /for/design-teams
page_view
Sent the trial form
Scored 80 (high intent) before anyone read it
form_submit
Started a trial
The Halden Studio workspace was created
user_signed_up
Opened the first-project nudge
She got the Bring a teammate version
apex_email_opened
Made her first project
Her team's first shared project, 14 files
project_created
Invited six teammates
Four joined within a day
user_signed_up
Activated
Four people working in it together
activated
Subscribed to Team
$24,000 a year
subscription_started
Every experiment she was in
3 experimentsEntered 8d ago
Priya, Sable works better with one teammatev2email · Opened · 8d ago
Entered 12d ago
One trial, end to end
Priya starts a trial for Sable. Sable is fictional, but every screen below is Apex. Follow her from the first ad to the renewal. In sixteen steps, you'll see how Apex connects acquisition, product use, sales, messages, experiments, and recurring revenue.
01 · Before anything happens
Most tools ask you to describe your product again in their language. Those descriptions drift. Soon product, marketing, and finance have three answers for how many trials activated.
Apex reads your code and builds one list of moments: someone signed up, invited a teammate, made a project, subscribed, expanded, or churned. You approve the list. After that, every message, experiment, report, and payout uses the same names.
Green means Apex has seen the moment in live traffic. Grey means the name exists but nothing has sent it yet, which is usually a broken signal masquerading as a real number.
Your schema
mapped to Apex Spec v1.4.0
you Set up Apex in this repo.
apex Scanning 2,418 files for analytics calls and identify traits.
Found 17 events, 22 attributes. 6 names differ from the spec.
cart.addItem() → add_to_cart
firstName → first_name
apex Opened a pull request with the plan. Nothing ships until you merge it.
Point Apex at your code once. The rest of this story uses that same list. You don't set every feature up from scratch.
One integration02 · Tuesday, 9:14am
Priya leads product design at a 240-person company. A Sable ad appears in her feed and she clicks it.
Many teams reconstruct the source later from tags left on the web address. Different tools read those tags differently, so the numbers never match and some of the spend can't be explained.
With Apex, the campaign is attached when the link is made. Every report knows this visit came from paid social before Priya reaches the page. The first touch stays with her through the trial, the contract, and the renewal.
Sable
Sponsored
Your design system shouldn't live in one person's head. Get your whole team into the same file and watch how fast the arguing stops.

sable.example
Built for design teams, not just designers
Free to start. Invite the whole team.
The link in the ad
apex / linksWhere it sends them
Decided now, not guessed later. Every click on this link lands in the Paid Social row of your reports. The campaign it came from stays attached to the person for as long as they exist.
The channel is chosen when you make the link, not guessed months later. That spend won't disappear into direct traffic.
No tagging spreadsheet03 · 9:16am
Apex scores Priya the moment she signs up. The score uses facts you can inspect: company size, job title, source, pricing views, teammate invites, and product usage.
When someone asks why this account is an 80, the answer is on the screen. Reps start with accounts that can actually pay, while self-serve trials keep moving without a sales call they never wanted.
What it made of Priya
scored in 40msEveryone else, sorted the same way
1,325 peopleShe signed up at 9:16 and was scored at 9:16. Nobody waits for an overnight sync.
Scored where the data already is04 · 9:16am, still
In most stacks, a useful group lives inside a query only an analyst can open. Every team rebuilds it a little differently and calls the result the same audience.
Here the rule is a sentence: design leads at companies with 100 to 500 people. Priya joins the second the sentence is true and leaves when it isn't. Messages, experiments, and sales handoffs all use that same definition.
Trials with no project yet
418 peopleSigned up in the last 14 days and hasn't created a project
Design leads at mid-size companies
Priya is in this one1,264 peopleJob title contains Design and the company has 100 to 500 people
Ready to add more people
96 peopleActivated, on the Team plan, and invited more than five people
One Segment can feed a message, an experiment, an Adaptive Journey, and the list you send to an ad platform.
Write it once, use it everywhere05 · 9:17am
You're not maintaining four campaigns. Apex fills one message with the truth from Priya's trial, including her company, active seats, and days left.
The preview uses your logo, colors, footer, and real merge values. What you approve is what lands. Nobody gets a four-days-left note the morning after they paid.
A full email in their inbox. Authored once, with Priya's attributes resolved from your schema.
{{first_name}}Priya{{company_name}}Halden Studio{{trial_days_left}}4{{seats_active}}4 of 6Email, phone notification, browser notification, and the bell in your product all come from one message.
Four channels, one message06 · Set up once
Add three DNS records once and messages leave as hello@sable.example. Your domain, your sending history, and no vendor name in the from line.
The teammate invite uses the same editor. Because Priya caused that invite, it still sends when the recipient has opted out of marketing. The message carries no unsubscribe link because it isn't a campaign.
apex1._domainkey.sable.exampleapex1.dkim.apex.incapex2._domainkey.sable.exampleapex2.dkim.apex.incsable.examplev=spf1 include:amazonses.com ~all_dmarc.sable.examplev=DMARC1; p=quarantine; rua=mailto:dmarc@sable.exampleA full email in their inbox. Authored once, with Priya's attributes resolved from your schema.
Marketing messages and must-send product messages share one composer and one brand.
Same editor, both kinds of mail07 · Day 0 through day 14
You rarely know the perfect first week for every trial. An Adaptive Journey turns that week into a visible plan of waits, messages, experiments, and exits.
This one starts when Priya signs up and stops the moment her team activates or subscribes. The whole plan is on one screen, including what happens to accounts that stall.
If a step depends on an event Apex has never seen, it says so before you publish. A broken event can't quietly strand every account in a wait step.
Every wait, branch, and message uses an event you already approved or content you already wrote.
Nothing new to set up08 · Day 3, the fork
A small team can keep buying through the product. Priya invited six teammates at a 240-person company, so a human conversation makes sense.
Apex routes each account using company fit and product behavior. Sales doesn't waste a morning on low-value trials, and Priya doesn't begin the call by retelling everything she already did.
Buys on their own
Small team, credit card, one seat. Apex keeps the trial in the product with useful nudges. Nobody on your team spends a minute on it.
Buys with help from a person
Six teammates at a 240-person company. Apex hands sales her score, Segment, and product history before the first call.
Product-led and sales-assisted growth are one branch chosen from what the account actually does.
One journey, not two funnels09 · Inside the journey
Sable didn't know whether the first note should ask Priya to make a project or invite a teammate. Both sounded reasonable, so Apex sent both with a fair split.
Bring a teammate won 42.8% to 31.2%. A team like Priya's buys 6 seats at $220 a year, so one extra activated team is worth $1,320 in first-year revenue.
Apex checks that lift against the control, the previous 90 days, a group left alone on purpose, and an industry benchmark if you opt in. The result has to survive more than a good week.
+$105,600 a year
What it is worth
a year
Bring a teammate beat Start a project. 80 extra teams activated, $1,320 each.
Checked against the control and Sable's own last 90 days. The global holdout and opt-in industry benchmark sit in the workspace view.
687 teams got the winning version. That's 11.6 more teams activated per 100 than Start a project, so 80 more in total. Each one is worth $1,320, the 6 seats a team like Priya's pays for in a year.
The winning message is the one that activates more teams, not the one that gets more opens.
Measure activation, not attention10 · Day 6
Every software company argues about activation. In Apex, you write it as a rule the whole team can read. Priya hit this one on day six when a second project went up and four teammates were working together.
Active use, time to value, retention, churn, and returning accounts all read the same definition. A canceled account that comes back isn't counted as a brand-new signup just to make growth look better.
The milestone, as a sentence
apex / engagement / adoptionWhen someone hasn'twithinof, send them.
2,140
Tracked
806
Nudged
1,284
Adopted
+14.2%
Better than the holdout by
Pick the event. Green means Apex has really seen it happen.
Bars stack your active users by type — New (first time active), Returning (active again), and Resurrected (back after going quiet). The dashed Dormant line tracks users who lapsed — no qualifying activity within your churn window.
Change the definition and activation, retention, and churn all move with it.
Your definition, not a default11 · Meanwhile, on the website
The pricing page Priya read was already comparing two approaches. One arrived on monthly billing. The other led with annual billing and showed the savings.
The variant is chosen before the page leaves the server, so the price doesn't jump in front of her. When one wins, Apex can open the pull request that makes it permanent and removes the experiment branch.
The two pricing pages visitors are being split between
server-sideOne page, built once, rendered twice. The version on the right does one thing, which is push annual billing: it arrives on annual, it paints the recommended plan and its button in a savings colour, and it prices the two free months. That is one change with three faces, not three changes, so a lift has one cause you can act on.
No flicker for Priya, and no abandoned experiment code slowing the page down six months later.
Decided before the page is sent12 · Right now
Most analytics tell you what happened yesterday. This screen shows what people are doing now, which is what you need in the twenty minutes after a launch.
When Priya signs in, her anonymous visit and known lead become one record. The first touch, pricing views, signup, and product use stay together instead of starting over at the form.
Activity
apex / web / livePeople here now
3 on siteThe ad click that happened before Priya signed in stays attached when Apex learns who she is.
Anonymous and known, one stream13 · The record
Every experiment Priya entered, which variant she saw, and the message that variant sent sit on one record. So do the times Apex left her alone on purpose.
Sales can open this before a renewal call instead of rebuilding the story from a CRM, analytics tool, messaging tool, and billing tab. Priya doesn't have to retell her own trial.

Priya Raman
priya@haldenstudio.com
$18,400
lifetime value
How she got here
every event, in the order it happenedCame in from a Facebook ad
go.sable.example/design-teams-q3 → /for/design-teams
page_view
Sent the trial form
Scored 80 (high intent) before anyone read it
form_submit
Started a trial
The Halden Studio workspace was created
user_signed_up
Opened the first-project nudge
She got the Bring a teammate version
apex_email_opened
Made her first project
Her team's first shared project, 14 files
project_created
Invited six teammates
Four joined within a day
user_signed_up
Activated
Four people working in it together
activated
Subscribed to Team
$24,000 a year
subscription_started
Every experiment she was in
3 experimentsEntered 8d ago
Priya, Sable works better with one teammatev2email · Opened · 8d ago
Entered 12d ago
Her score, Segment, messages, experiments, product use, and revenue were never separate stories.
Assembled, not stitched together14 · Multiply by every account
Priya is one account. Repeat the same chain across all accounts and you stop asking which channel deserves credit. You ask what to buy more of.
LinkedIn brings fewer leads but more customers who stay. Meta signs up people cheaply but needs 22 months to pay back. The working is on the screen: spend, customers, lifetime value, CAC, churn, and payback.
Each row follows real accounts from spend through lifetime value and CAC payback.
Accounts over time, not last click15 · Back to the ad platforms
If you send ad networks every signup, they'll find more signups, including trials that never activate or pay.
Apex sends back the lead worth calling, the team that activated, the subscription, and the contract value. Marketing, sales, and finance all use the same conversion, so the next account is more likely to look like one you'd want again.
The network can't learn that a company signed weeks after the click unless you tell it.
Close the loop16 · Find the next one
Consultants already recommend software to their clients. A partner program gives them a tracked link and a clear share when an account subscribes.
The link, contract, recurring commission, experiment, and channel economics all read the same subscription event. You add a new source of customers without adding a second system to reconcile on payout day.
Sable Partner Program
Sable
Consultants who set Sable up for their clients get paid on every workspace that subscribes, for as long as it keeps paying. One partner login works across every program they join.
The partner's cut comes from the same subscription that scored the experiment and filled the attribution table.
Same subscription eventKeep what worked
The winning message, pricing page, sales route, and channel decision shouldn't disappear when the quarter ends. Apex keeps every result with the evidence attached, so the next experiment starts from what your company already learned.
Teams that invite a second person in week one activate far more often.
last moved by First-project nudge
Design leads become customers more often than engineering leads at the same company size.
last moved by Fit scoring change
Showing annual pricing first doesn't stop trials from paying.
last moved by Pricing page toggle
In the last week of a trial, deadline reminders beat value reminders.
last moved by Trial-expiry messages
Your move
Find the right accounts. Help more teams reach value. Keep the ones that fit. Prove what increased recurring revenue.