Pricing Strategy
SKILL.md
HOW_TO_USE.md
sample_input.json
expected_output.json
skillsstrategySKILL.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
# Pricing Strategy
A pricing plan built from what the market actually charges and how buyers actually search, not from a template. Every market finding comes from a page this skill reads or a call it runs, and every recommendation names the rule and the numbers behind it.
Pricing has three parts, and most teams only argue about the third:
1. **Packaging:** what each plan includes (features, limits, support, controls).
2. **Pricing metric:** the unit you charge for (seat, location, usage band, contacts, transactions, flat).
3. **Price point:** the amount, and how monthly and annual billing differ.
## Before you start
You need the InsightfulPipe MCP connected. DataForSEO is the main data source (pricing pages and search demand). Search Console, GA4 and Stripe are optional and add your own signals. Without DataForSEO, see "Without a connection" at the end.
1. Call `query_contexts` with `request="accounts"` for `platform="dataforseo"`, and for `google-search-console`, `google-analytics` and `stripe` if the user has them. Note `workspace_id`, `brand_id`, the Search Console `site_url` and the GA4 `property_id`.
2. Call `query_contexts` with `request="actions_details"` for `onpage_content_parsing` and `kw_google_ads_search_volume` (dataforseo), plus `search_analytics`, `get_report`, and `get_products`, `get_prices`, `get_subscriptions`, `get_coupons` (stripe) when those are connected. Follow the body shapes it returns.
3. Ask the user for these, and use the defaults if they don't know:
- **Product and buyer:** what it does, who pays, self-serve or sales-led. Default: infer it from their site and say so.
- **Current pricing,** or "new". Default: read their own pricing page in Step 1.
- **3 to 5 rivals' pricing page URLs.** Default: propose the category leaders and confirm them before reading anything (each page is a paid call).
- **Reference customer profiles:** 2 or 3 sizes measured in the unit that drives cost in the category (staff, seats, contacts, locations, orders). Default: smallest buyer, typical buyer, large buyer; for example 1, 3 and 10 staff.
- **Goal:** growth (more customers), revenue (more per customer) or margin. Default: growth for a new product, revenue for an existing one.
- **Value inputs (optional):** what one customer gains per month (extra revenue, hours saved times hourly cost, loss avoided) and your monthly cost to serve one. Without them, the value check in D8 is not run.
- **Market (optional):** country and language. Default: United States, English (`location_code` 2840, `language_code` "en").
State the date the pages were read, the market and the rivals at the top of the report.
## How to run the queries
Every body goes through `query_data` with the `platform` it names. Rules:
- **DataForSEO costs money.** One call per pricing page plus one keyword call: about 5 to 7 paid calls for a run. Never loop or retry a paid call more than once.
- **Pages localise.** A page can come back in another language or currency depending on where it is fetched from. Always send `"accept_language": "en-US"` (or the user's market). Record the currency you got and keep other currencies out of the price math unless the user gives an exchange rate.
- If a call fails, keep going. Mark what it would have shown **unknown**, say which call failed and why, and never fill the gap with a guess.
## Step 1. Market price map
Read each rival's pricing page, and the user's own if they have one:
```json
{"platform": "dataforseo", "action": "onpage_content_parsing", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "url": "<PRICING_URL>", "accept_language": "en-US"}
```
The text is in `data[0].page_content.main_topic` (and `secondary_topic`); structured offers, when the page has them, are in `page_content.offers`.
**When prices are missing.** Many pricing pages draw their prices with scripts, and the parsed text then has plan names but no amounts. If a plan has no price in the parsed text:
1. Read the page with your own web fetch tool, if you have one, and take the amounts from the visible text next to each plan name and its billing label.
2. Otherwise ask the user for the amounts.
3. Otherwise mark the price **unknown**. Never estimate a price.
Note the source of every price (parsed page, web fetch or user) in the map. `"enable_javascript": true` is accepted but did not recover script-drawn prices in testing, so don't pay for a second call to try it.
**Record, per rival and plan, only what the page says:**
| Field | What to record |
|---|---|
| Plans | Plan names in order, including free and "contact us" plans |
| Price | The amount shown, the billing basis (annual-billed per month, or monthly) and the currency. When both are shown, keep both. |
| Metric | What the price multiplies by: per seat or user, per location, a band of calendars or contacts, included usage (bookings, emails, credits), transaction fees, or flat |
| Limits | The stated limits that decide which plan a buyer needs (users, calendars, locations, usage) |
| Entry offer | Free plan (and its cap), trial length, and whether a card is needed |
| Enterprise gate | "Contact us" or "starts at" plans, and the threshold that sends you there |
| Add-ons | Anything sold on top: credits, extra seats, setup services, assistants |
| Presentation | The default billing toggle, badges ("most popular", "best value"), anchors ("starts at $X"), annual saving shown |
Feature tables built from check-mark images parse as empty cells. Don't infer which plan has a feature from an empty cell; leave it out or ask.
## Step 2. Price every rival at your reference profiles
For each profile, find each rival's cheapest plan whose **stated limits** fit it, and compute the monthly price on annual billing (seat price × seats, band price, or price per location). If a rival only shows monthly billing, use that and say so.
- A plan with no stated limit for the profile's unit fits.
- A free plan counts at $0. Say what it costs instead, if the page says so (card fees, usage fees).
- A rival in another currency, or one whose metric can't be mapped to the profile (for example included bookings when the profile is staff), stays in the map but out of this table. Say why.
This table shows how each metric scales: seat pricing climbs with team size, band pricing climbs in steps, location pricing and fee-funded models stay flat.
## Step 3. Search demand and price sensitivity
One call with 20 to 30 keywords built from the category, the rivals and the segments:
```json
{"platform": "dataforseo", "action": "kw_google_ads_search_volume", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "keywords": ["<KEYWORD_1>", "<KEYWORD_2>"], "location_code": 2840, "language_code": "en"}
```
Each row gives `search_volume` (monthly average), `cpc` and `competition`. Build the list from these groups (C = category phrase, R = a rival, S = a segment):
| Group | Patterns |
|---|---|
| Head | "C", "C app" |
| Price research | "C pricing", "C cost", "R pricing" for every rival |
| Free-seeking | "free C", "free C app", "cheap C", "is <leader> free", "<leader> free plan" |
| Switching | "R alternative" for the 2 biggest rivals |
| Segment | "C for S", "S C" for each segment the user sells to |
| Enterprise | "enterprise C", "C for teams" |
Send both segment patterns for every segment the user names, and the whole list in one call. A keyword with no volume returns null: list it as "no data" and count it as 0 in the sums. Google Ads can merge close variants: two phrasings ("salon booking software", "booking software for salons") may come back with the same volume, CPC and monthly trend. List both, but count the pair once in a group's sum. Then compute:
- **Free-seeking share** = free-seeking volume ÷ (free-seeking + price-research volume). How strongly the market expects a no-cost way in.
- **Leader free check** = the leader's free-seeking volume ÷ "<leader> pricing" volume. How often buyers ask whether the leader is free before (or instead of) asking what it costs.
- **Segment CPC index** = a segment keyword's CPC ÷ the CPC of the highest-volume head keyword. What advertisers pay for that buyer relative to the average buyer, a proxy for how much that segment is worth.
- **Switching volume** per rival, and **enterprise volume**.
## Step 4. Your own signals (optional, when connected)
**4a. How searchers find your pricing (Search Console).** Last 90 complete days:
```json
{"platform": "google-search-console", "action": "search_analytics", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "site_url": "<SITE_URL>", "dimensions": ["query"], "start_date": "<START>", "end_date": "<END>", "row_limit": 1000}
```
Keep queries with a price word: price, pricing, cost, free, cheap, discount, coupon, plan, subscription, trial, vs, alternative. Group them like Step 3 and report impressions and clicks per group. This pull stops at 1,000 rows; when it returns exactly 1,000, say the shares are of the visible rows.
**4b. Does pricing traffic convert (GA4).** Last 30 complete days:
```json
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["pagePath"], "metrics": ["screenPageViews", "activeUsers", "sessions", "keyEvents"], "start_date": "<START>", "end_date": "<END>", "dimensionFilter": {"filter": {"fieldName": "pagePath", "stringFilter": {"matchType": "CONTAINS", "value": "pric"}}}, "limit": 20}
```
```json
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["eventName"], "metrics": ["eventCount", "totalUsers", "keyEvents"], "start_date": "<START>", "end_date": "<END>"}
```
Report sign-up or purchase key events per 100 pricing page viewers. If no key event fired in the window, the rate is **unknown**: a defined event that never fires measures nothing. The page itself (layout, anchors, objections) belongs to the Pricing Page Auditor skill.
**4c. What customers actually pay (Stripe).** Untested until a Stripe account is connected; the bodies follow the helper schema:
```json
{"platform": "stripe", "action": "get_products", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "active": true, "auto_paginate": true}
```
```json
{"platform": "stripe", "action": "get_prices", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "active": true, "auto_paginate": true}
```
```json
{"platform": "stripe", "action": "get_subscriptions", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "status": "all", "auto_paginate": true}
```
```json
{"platform": "stripe", "action": "get_coupons", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "auto_paginate": true}
```
From these: plan mix (active subscriptions per price), average revenue per customer, share on annual billing, share with a discount, trialing count, and cancellations in the last 90 days per plan. Amounts are in the smallest currency unit (cents): divide by 100.
**Signs you are underpriced** (any two): most customers sit on the cheapest paid plan while using it heavily; prospects rarely push back on price; you are well under the paid median at the typical profile (Step 2); cancellations rarely cite price; rivals raised prices recently. **Signs you are overpriced:** cancellations cluster on one plan, heavy discount use (over a third of active subscriptions), and pricing traffic that doesn't convert while other pages do.
## Step 5. Decisions
Apply each rule, show the numbers that triggered it, and say when the user's business makes a rule wrong. The thresholds are starting points.
| # | Decision | Rule |
|---|---|---|
| D1 | Entry offer | **Free plan** when the free-seeking share is 40% or more and at least half the rivals cost $0 at the smallest profile: cap it at the smallest profile. **Trial only** when the share is under 25% and fewer than half the rivals are free. In between, test a free plan against a reverse trial (everything unlocked for a set time, then the free plan). Trial length follows time to first value: 7 days when value shows in the first session, 14 as the default, 30 when setup takes days. A card up front gets fewer, more serious starts. Overrule the numbers when the product says otherwise: a free plan suits a product that spreads through use and costs little per free user; a trial suits one that needs setup before it shows value. |
| D2 | Value metric | Pick the unit that (a) grows as the customer gets more value, (b) the buyer can predict, (c) is hard to game, (d) you can measure, and (e) the category already accepts. Use Step 2 to show how each rival's metric scales across the profiles, and where seat pricing gets expensive. |
| D3 | Price points | **Core plan:** at or under the median paid rival price at the typical profile. **Growth plan:** at or under the median paid price at the large profile. Going above a median needs a named advantage buyers pay for, and a test. Adjacent paid plans sit 1.3× to 3× apart: under 1.3× they blur together, over 3× they leave a gap a middle plan should fill. |
| D4 | Plan count | Three rungs (entry, core, growth) by default, plus a contact-us rung when D5 says so. Use four or more only when the median paid price at the large profile is 5× or more the median paid price at the typical profile. |
| D5 | Enterprise rung | Add a contact-us rung when at least half the rivals show one, or the user has deals that need contracts or security reviews. Don't lead with it when enterprise search volume is under 100 a month. What enterprise buyers expect: single sign-on, audit logs, admin controls, an uptime commitment, security documents and a named contact. |
| D6 | Annual billing | Take one saving per rival: the largest the page shows (its "save up to" figure). Leave out rivals with no annual option or an amount with no billing label. Match the median of those savings, kept within 15% to 25%. Show annual prices by default only when most rivals do. Savings and the default toggle are not amounts, so rivals in any currency count in both. |
| D7 | Segment package | Test every segment the user names. A segment keyword with a CPC index of 2 or more and 100 or more searches a month is a segment worth a dedicated package. Price it against the rival plan that names the same segment, if there is one: at or under that plan, and 1.3× to 3× the plan it builds on. Compare all three in one unit: if the rival charges per location and your plans charge per account, compare at one location, say what each extra location costs at the rival, and say where a second location goes in your ladder. |
| D8 | Value ceiling | Only with value inputs: the price should stay at or under 10% to 25% of the monthly value one customer gets, and above the cost to serve. The floor that matters to the buyer is the next best alternative (Step 2), not your cost. Not run without the inputs; say so. |
## Step 6. Value ladder and offer stack
Lay out the rungs a customer climbs, from the first free or cheap step to the most expensive plan, and the add-ons around them:
- **Entry:** removes the reason not to start (D1).
- **Core:** where most customers should land; the plan you badge.
- **Growth:** for the large profile; adds capacity and the controls bigger teams need.
- **Band edges** (when the metric is a band): each paid rung covers up to twice the profile it is priced for, so a growing customer has headroom before the next step. With profiles of 1, 3 and 10 staff: entry 1, core 2 to 6, growth 7 to 20.
- **Segment package or custom rung:** D7 and D5.
- **Add-ons:** only ones the market already sells (Step 1): usage credits, setup or migration services, extra capacity, assistants. Each add-on should answer "what does a customer who outgrows this plan buy next?"
Separate rungs with the levers buyers understand: usage limits (staff, bookings, contacts), features, support level, and access and control (API, single sign-on, audit logs, admin roles). Limits that track the value metric (D2) make the best upgrade triggers.
Flag gaps: adjacent rungs more than 3× apart, a rung with no reason to upgrade into it, or an add-on that costs more than the next plan.
## Step 7. Perception and packaging review
From the pages (Step 1) and search (Steps 3 and 4a):
- **Price endings:** prices ending in 9 read as value; round prices read as premium and simple. Note what the category does.
- **Badges and anchors:** which plan rivals badge, and any "starts at" or high plan that makes the middle look reasonable (an anchor), or a weaker plan placed so the badged one looks like the obvious pick (a decoy).
- **Billing framing:** annual by default or monthly, and how the saving is shown (percent, months free, or per-month price). Small daily framing ("under $1 a day") makes a low price feel smaller; it doesn't help a premium position.
- **Entry wording:** how plainly rivals say "free" or "no card needed", and whether searchers are asking (leader free check).
- **Plan names:** names that say who the plan is for beat names that only say size.
- **Readable prices:** when a page draws its prices with scripts (Step 1 needed the fallback), search engines and AI assistants may not see them either. If the user's own page does this, recommend putting the prices in the page text.
- **Your page (if you have one):** the same checks on your plans, and the 4a query groups: many "free" or "cheap" queries landing on your pricing means the entry offer needs to be clearer, not cheaper.
## Step 8. Validate before you ship
The market map tells you where you can sit; buyers tell you what they will pay. Recommend at least one of these:
- **Van Westendorp price sensitivity survey:** ask each respondent four prices (too cheap to trust, a bargain, getting expensive, too expensive to consider). Plot the cumulative answers; the crossings give an acceptable range and a point of least resistance. Read at least 100 answers per segment you want to price separately, and show the product description, not just the name.
- **Gabor-Granger ladder:** ask "would you buy at $X?" and move up after a yes, down after a no. Ladder: the lowest, median and highest paid rival price at the typical profile, plus one rung 25% above the highest.
- **Conjoint:** for a big repackaging; buyers pick between plan bundles, which prices each feature and limit. Use it when plans differ on many features.
**Pricing experiments:**
| Test | Measure |
|---|---|
| Free plan vs reverse trial (D1) | Paid conversion by day 30 and 90, not sign-ups |
| Core price at two ladder points | Paid conversion and revenue per visitor to pricing |
| Annual default on vs off | Annual share and first-year revenue |
| Metric: seat vs band | Expansion revenue at 90 days |
| Plan names | Plan mix |
Test on new customers only, one change at a time, for at least one full billing cycle. If traffic is too thin for a split test, run the prices in sequence and compare like-for-like periods, or vary quotes in sales calls and track close rates.
**Before launch:** the pricing page and plan limits match, billing is set up for every plan and the annual option, sales and support know the new prices and the upgrade triggers, and the FAQ answers "what happens to my current plan?"
## Changing prices you already charge
Use this when Step 4 shows you are underpriced, or the user asks to raise prices:
1. **Pick the approach:** new customers only (existing ones keep their price, simplest, leaves money behind); existing customers at renewal with 60 to 90 days' notice and an option to lock the old price by switching to annual; a new plan with new value at the new price, which existing customers may choose; or a full restructure that maps each customer to the nearest new plan.
2. **Write the notice** with: what is changing and from when, what was added since they joined, exactly what it means for this customer, what they can do before the date, and who to contact. No surprises in the invoice.
3. **Watch** paid conversion on the pricing page (4b) and cancellations per plan (4c) for two billing cycles.
## Pricing and acquisition economics
Higher prices only help if retention holds. Lifetime value = monthly revenue per customer × gross margin ÷ monthly churn. Keep lifetime value at about 3× the cost to acquire a customer or better; a higher price gives more room to pay for ads, a lower price needs cheaper acquisition. For the full calculation on live ad spend, use the LTV:CAC Ratio Optimizer skill.
Advertise each rung to the buyer it fits: the entry offer to broad, problem-aware audiences; the core plan to high-intent searches ("<category> pricing", "<rival> alternative"); a segment package to the segment terms D7 found; the contact-us rung to named accounts.
## Report format
1. **Headline:** the recommended metric, entry offer, plans and prices in three lines, with the market, the rivals and the date the pages were read.
2. **Market price map:** one row per rival and plan, with each price's source.
3. **Price at your profiles:** the Step 2 table, plus who was left out and why.
4. **Demand signals:** free-seeking share, leader free check, segment CPC indexes, switching and enterprise volume, with the keyword table.
5. **Your own signals:** 4a to 4c, or "not connected" / "not run" with the reason.
6. **Decisions D1 to D8:** each with the rule, the numbers and the verdict.
7. **Recommended plans:** rung, metric, price ceiling, who it's for, the limit that moves a buyer up.
8. **Value ladder and gaps.**
9. **Perception review.**
10. **Validation plan and experiments.**
11. **Unknowns:** every price, check or signal that couldn't be read, and why.
## What this skill never changes
It changes nothing. It reads pages and data and returns a plan. It never edits prices, products or coupons in Stripe, and never edits your pricing page.
## Without a connection
If DataForSEO isn't connected, ask the user to paste each rival's plan names, prices, limits and entry offer (or read the pages with your web fetch tool), and to share any keyword volumes they have. Run Steps 2 and 5 to 8 on that, label the demand checks **unknown**, and say the market map came from the user.
## Go deeper
- **Pricing Page Auditor:** how the prices are presented and whether visitors act on them.
- **Marketing Psychology:** anchoring, decoys and price framing in more depth.
- **LTV:CAC Ratio Optimizer:** whether the new prices pay for acquisition.
- **Signup Flow CRO:** the free plan or trial start you chose in D1.
## Rules
- Never invent a price, limit or volume. Unknown is an answer.
- Quote rivals' facts in your own words, with the source per price.
- Keep currencies apart; never mix amounts in different currencies in a median (percentages such as annual savings carry no currency).
- Every recommendation names the decision rule and numbers behind it.
- A recommendation to go above the market median needs a named reason and a test.
- No more than about 7 paid DataForSEO calls per run without asking.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# How to Use This Skill
Hey Claude, I just added the "pricing-strategy" skill. Work out what we should charge: read our main rivals' pricing pages, check how buyers search on price, and recommend plans, prices and whether to offer a free plan or a trial.
## What you need
- **The InsightfulPipe MCP connected to Claude, with DataForSEO available.** The skill reads each rival's pricing page and pulls Google Ads search volumes and CPCs itself. A typical run is 5 to 7 paid DataForSEO calls: one per pricing page and one keyword call.
- **3 to 5 rivals.** Name them or paste their pricing URLs. If you don't, the skill proposes the category leaders and checks with you before reading anything.
- **Two or three customer sizes** in the unit that drives cost in your category (staff, seats, contacts, locations). Without them it uses a small, typical and large buyer.
- **Optional:** Search Console and GA4 (how searchers reach your pricing and whether that traffic signs up), and Stripe (plan mix, discounts and cancellations; untested until a Stripe account is connected). Also optional: what one customer gains a month and what one costs you to serve, which turns on the value check.
- **No DataForSEO?** Paste each rival's plans, prices, limits and free plan or trial, and any keyword volumes you have. The skill runs the same decisions on that and marks the search signals unknown.
## Example requests
**A new product**
Hey Claude, I just added the "pricing-strategy" skill. We're launching an online booking tool for salons and studios. Compare Calendly, Acuity, Setmore and Square Appointments and tell me what to charge for 1, 3 and 10 staff.
**Free plan or trial**
Hey Claude, I just added the "pricing-strategy" skill. Should we offer a free plan, a free trial or a reverse trial? Use our three main rivals and how people search for them.
**Value ladder and offer stack**
Hey Claude, I just added the "pricing-strategy" skill. Lay out a value ladder for our product, from the first free step to a custom plan, with the add-ons our market already sells and any gaps between rungs.
**Pricing perception review**
Hey Claude, I just added the "pricing-strategy" skill. Review how our pricing page and our rivals' pages present price: endings, badges, anchors, annual savings and plan names. Use our Search Console data to see which price searches reach us.
**Raising prices**
Hey Claude, I just added the "pricing-strategy" skill. Check whether we're underpriced against the market and our Stripe data, and plan a price increase for existing customers.
## What you get
1. **A headline** with the recommended pricing metric, entry offer, plans and price ceilings, plus the market, rivals and the date the pages were read.
2. **A market price map:** every rival's plans, prices (annual and monthly), metric, limits, free plan or trial, enterprise gate, add-ons and badges, with the source of each price.
3. **Each rival priced at your customer sizes,** so you see how per-seat, band, per-location and fee-funded models scale.
4. **Demand signals from search:** the share of price searches looking for free, how often buyers ask if the leader is free, switching searches, enterprise searches, and which segments advertisers pay most to reach.
5. **Eight decisions, each with its rule and numbers:** entry offer, value metric, price points, plan count, enterprise rung, annual discount, segment package and value ceiling.
6. **Recommended plans and a value ladder,** with upgrade triggers, add-ons and flagged gaps.
7. **A perception and packaging review** of price endings, badges, anchors, billing framing, free-plan wording and plan names.
8. **A validation plan:** a Van Westendorp survey, a Gabor-Granger price ladder built from rival prices, and pricing experiments, plus a price-increase plan when you need one.
9. **An unknowns list:** every price or signal that couldn't be read, and why.
## What it can change for you
Nothing. It reads pages and data and returns a plan. It never edits prices, products or coupons in Stripe and never touches your pricing page.
## Tips
- Many pricing pages draw their prices with scripts. When the parsed page has no amounts, the skill reads the page with its web fetch tool or asks you, and marks the source of every price. It never guesses a price.
- Pages can come back in another currency. Prices in a different currency stay in the map but out of the medians unless you give an exchange rate.
- The thresholds are starting points. If a rule doesn't fit your business, say so and the skill notes the override in the report.
- For how the prices are presented and whether visitors act on them, follow up with the Pricing Page Auditor skill. For unit economics on live ad spend, use the LTV:CAC Ratio Optimizer.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
{
"note": "Real run on public data on 2026-10-06 through the InsightfulPipe MCP: DataForSEO content parsing of five public pricing pages and Google Ads keyword volumes (US, English) in two calls: the segment terms for studios and clinics were sent in a second call after review, where a run that follows SKILL.md sends one, on a neutral public topic unrelated to us. The product is a hypothetical new entrant, so it has no Search Console, GA4 or Stripe data and Steps 4a to 4c are not run. Three pages drew their prices with scripts, so those amounts came from the skill's web-fetch fallback, as SKILL.md describes. Generated by script from the raw responses.",
"request": "Hey Claude, I just added the \"pricing-strategy\" skill. We're launching an online booking tool for salons, studios and small clinics. Work out what we should charge: read Calendly, Acuity, Setmore, Square Appointments and SimplyBook.me, check how buyers search on price, and recommend plans, prices and whether to offer a free plan or a trial.",
"product": {
"what": "online booking and reminders for small service businesses",
"buyer": "owner of a salon, studio or small clinic",
"motion": "self-serve",
"current_pricing": "new",
"goal": "growth"
},
"reference_profiles": [
"solo (1 staff)",
"typical (3 staff)",
"larger (10 staff)"
],
"value_inputs": null,
"market": {
"location_code": 2840,
"language_code": "en",
"accept_language": "en-US"
},
"rivals": [
{
"rival": "Calendly",
"pricing_url": "https://calendly.com/pricing"
},
{
"rival": "Acuity Scheduling",
"pricing_url": "https://acuityscheduling.com/pricing"
},
{
"rival": "Setmore",
"pricing_url": "https://www.setmore.com/pricing"
},
{
"rival": "Square Appointments",
"pricing_url": "https://squareup.com/us/en/appointments/pricing"
},
{
"rival": "SimplyBook.me",
"pricing_url": "https://simplybook.me/en/pricing"
}
],
"date_pages_read": "2026-10-06",
"data_pulled": [
{
"call": "dataforseo onpage_content_parsing",
"pages": 5,
"result": "all HTTP 200; prices in the parsed text for Setmore and SimplyBook.me (EUR) only"
},
{
"call": "dataforseo onpage_content_parsing with enable_javascript",
"pages": 1,
"result": "Calendly retried once: still no prices (this run is why SKILL.md says not to pay for the retry)"
},
{
"call": "web fetch fallback (not an InsightfulPipe MCP action)",
"pages": 3,
"result": "Calendly, Acuity Scheduling and Square Appointments plan amounts read from the visible page text"
},
{
"call": "dataforseo kw_google_ads_search_volume",
"keywords": 24,
"result": "first keyword call"
},
{
"call": "dataforseo kw_google_ads_search_volume",
"keywords": 5,
"result": "second keyword call: the segment terms for studios, clinics and \"booking software for salons\", added after review because the first list skipped them; a run that follows SKILL.md sends all keywords in one call"
},
{
"call": "keyword totals",
"keywords": 29,
"result": "26 with volume, 3 with no data; same 12-month window in both calls"
}
],
"paid_calls": 8,
"keywords_sent": [
"appointment scheduling software",
"scheduling software pricing",
"appointment scheduling software cost",
"online booking system cost",
"free scheduling software",
"free appointment scheduling software",
"free online booking system",
"free scheduling app",
"cheap scheduling software",
"calendly pricing",
"acuity scheduling pricing",
"setmore pricing",
"simplybook pricing",
"square appointments pricing",
"calendly alternative",
"acuity scheduling alternative",
"is calendly free",
"calendly free plan",
"salon booking software",
"booking software for small business",
"scheduling software for small business",
"appointment scheduling app",
"enterprise scheduling software",
"scheduling software for teams",
"booking software for salons",
"studio booking software",
"booking software for studios",
"clinic booking software",
"booking software for clinics"
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
{
"report_title": "Pricing strategy: new online booking tool for small service businesses",
"headline": {
"metric_and_entry": "Charge by staff band; start with a free plan for 1 staff, no card (60% of price-related searches look for free, and 3 of 4 USD rivals are free for one person).",
"plans_and_prices": "Free (1 staff), Core (2 to 6 staff) at or under $28.50/month, Growth (7 to 20) at or under $50/month, billed annually with 20% off; a salon package at $65 to $149 a month for one location; contact-us rung listed last.",
"why_now": "Salon buyers cost advertisers 3.08x the category CPC and Square is the only rival with a plan card for salons; enterprise searches are 80 a month, so don't lead with enterprise.",
"context": "US market, English; rivals Calendly, Acuity Scheduling, Setmore, Square Appointments, SimplyBook.me; pages read 2026-10-06."
},
"market_price_map": [
{
"rival": "Calendly",
"url": "https://calendly.com/pricing",
"currency": "USD",
"price_source": "web fetch (the parsed page had plan names but no amounts, also with enable_javascript)",
"metric": "per seat (each person who hosts meetings needs a seat)",
"plans": [
{
"plan": "Free",
"annual_billed_per_month": 0,
"monthly_billed": 0,
"limits": "one event type, one calendar connection"
},
{
"plan": "Standard",
"annual_billed_per_month": 10,
"monthly_billed": null,
"annual_saving_shown": "17%",
"limits": "per seat; no seat limit stated"
},
{
"plan": "Teams",
"annual_billed_per_month": 16,
"monthly_billed": null,
"annual_saving_shown": "20%",
"limits": "per seat; adds round-robin and team scheduling",
"badge": "Popular plan"
},
{
"plan": "Enterprise",
"annual_billed_per_month": null,
"monthly_billed": null,
"shown": "starts at $15k per year",
"limits": "starts at 50 seats"
}
],
"entry_offer": "Free plan (\"Always free\"); the FAQ mentions a trial but its length is not shown on the page",
"enterprise_gate": "Enterprise, \"starts at $15k per year\" from 50 seats, talk to sales",
"add_ons": [
"Notetaker and AI assistant (Callie) on Standard or Teams",
"single sign-on add-on on Teams"
],
"presentation": {
"default_billing": "annual (\"Billed yearly\" shown first)",
"badge": "\"Popular plan\" on Teams",
"anchor": "Enterprise \"starts at $15k/yr\"",
"annual_saving": "\"Save up to 20%\""
}
},
{
"rival": "Acuity Scheduling",
"url": "https://acuityscheduling.com/pricing",
"currency": "USD",
"price_source": "web fetch (the parsed page had plan names and FAQs but no amounts)",
"metric": "calendar band (one calendar per employee or location)",
"plans": [
{
"plan": "Starter",
"annual_billed_per_month": 16,
"monthly_billed": 20,
"limits": "1 calendar"
},
{
"plan": "Standard",
"annual_billed_per_month": 27,
"monthly_billed": 34,
"limits": "up to 6 calendars"
},
{
"plan": "Premium",
"annual_billed_per_month": 49,
"monthly_billed": 61,
"limits": "up to 36 calendars"
},
{
"plan": "Enterprise",
"annual_billed_per_month": null,
"monthly_billed": null,
"limits": "contact the Enterprise team"
}
],
"entry_offer": "7-day trial on every plan, no credit card needed; no free plan",
"enterprise_gate": "Enterprise, contact the Enterprise team (no price shown)",
"add_ons": [
"AI booking assistant and HIPAA agreement included on Premium, not sold separately"
],
"presentation": {
"default_billing": "annual (\"Pay annually\" shown first)",
"badge": "none found",
"anchor": "none",
"annual_saving": "\"Save 20%\""
}
},
{
"rival": "Setmore",
"url": "https://www.setmore.com/pricing",
"currency": "USD",
"price_source": "parsed page",
"metric": "per user (each staff calendar counts as a user)",
"plans": [
{
"plan": "Free",
"annual_billed_per_month": 0,
"monthly_billed": 0,
"limits": "up to 4 users"
},
{
"plan": "Pro",
"annual_billed_per_month": 5,
"monthly_billed": null,
"limits": "unlimited users, priced per user",
"note": "a second amount, $12 per user, is shown next to it without a billing label, so it stays out of the annual-saving math"
},
{
"plan": "Enterprise",
"annual_billed_per_month": null,
"monthly_billed": null,
"limits": "contact us"
}
],
"entry_offer": "Free plan for up to 4 users; Pro has a 30-day refund window instead of a trial",
"enterprise_gate": "\"Need more options to suit your larger organisation?\", contact us (no price shown)",
"add_ons": [
"Live receptionist, $99 a month, separate plan, US only",
"extra SMS credits bought in the app (Pro includes 500 a month per team member)"
],
"presentation": {
"default_billing": "annual (\"$5* ... *Annual pricing\")",
"badge": "none found",
"anchor": "none",
"annual_saving": "not stated"
}
},
{
"rival": "Square Appointments",
"url": "https://squareup.com/us/en/appointments/pricing",
"currency": "USD",
"price_source": "web fetch (the parsed page had the FAQ but not the plan fees)",
"metric": "per location, plus card processing fees on every payment",
"plans": [
{
"plan": "Free",
"annual_billed_per_month": null,
"monthly_billed": 0,
"limits": "unlimited staff calendars; \"for solo professionals\"",
"processing_online": "3.3% + 30¢"
},
{
"plan": "Plus",
"annual_billed_per_month": null,
"monthly_billed": 49,
"limits": "per location; adds no-show fees, multi-staff booking, waitlist; \"for growing teams\"",
"processing_online": "2.9% + 30¢",
"badge": "Best value"
},
{
"plan": "Premium",
"annual_billed_per_month": null,
"monthly_billed": 149,
"limits": "per location; adds resource management; \"for large salons\"",
"processing_online": "2.9% + 30¢"
},
{
"plan": "Square Pro",
"annual_billed_per_month": null,
"monthly_billed": null,
"limits": "custom pricing; for businesses processing over $250,000 a year"
}
],
"entry_offer": "Free plan (pay card fees only); Plus and Premium have a 30-day trial per the FAQ (the trial length on the plan cards is drawn by script)",
"enterprise_gate": "Square Pro, \"Get custom pricing\" above $250,000 a year in card payments",
"add_ons": [
"payroll from $35 a month plus $6 per person paid",
"hardware from $59",
"texts beyond the included amount (3¢ on Plus, 1.5¢ on Premium)"
],
"presentation": {
"default_billing": "monthly only (no annual option shown)",
"badge": "\"Best value\" on Plus",
"anchor": "Square Pro \"Get custom pricing\"",
"annual_saving": "none"
}
},
{
"rival": "SimplyBook.me",
"url": "https://simplybook.me/en/pricing",
"currency": "EUR",
"price_source": "parsed page (returned in EUR although accept_language was en-US)",
"metric": "booking-volume band with included staff providers (flat fee per band)",
"plans": [
{
"plan": "Free",
"annual_billed_per_month": 0,
"monthly_billed": 0,
"limits": "50 bookings a month, 1 provider"
},
{
"plan": "Basic",
"annual_billed_per_month": 11.9,
"monthly_billed": 13.9,
"limits": "100 bookings a month, 5 providers"
},
{
"plan": "Standard",
"annual_billed_per_month": 24.9,
"monthly_billed": 29.9,
"limits": "500 bookings a month, 15 providers"
},
{
"plan": "Premium",
"annual_billed_per_month": 49.9,
"monthly_billed": 59.9,
"limits": "2,000 bookings a month, 30 providers",
"badge": "Most popular"
},
{
"plan": "Enterprise",
"annual_billed_per_month": null,
"monthly_billed": null,
"limits": "custom, billed annually, book a call"
}
],
"entry_offer": "Free plan with no time limit, and a 14-day trial of premium features, no credit card needed",
"enterprise_gate": "Enterprise, custom price, for multi-location businesses",
"add_ons": [
"Full Setup service from €450",
"SMS, WhatsApp and AI booking credits",
"account manager help by the hour"
],
"presentation": {
"default_billing": "annual (\"per month, billed annually\" shown first)",
"badge": "\"Most popular\" on Premium",
"anchor": "Enterprise \"Custom\"",
"annual_saving": "\"Save 17%\""
}
}
],
"price_at_profiles": {
"profiles": [
"solo (1 staff)",
"typical (3 staff)",
"larger (10 staff)"
],
"basis": "cheapest plan whose stated limits fit, monthly price on annual billing (Square shows monthly only)",
"rows": [
{
"rival": "Calendly",
"1_staff": {
"plan": "Free",
"price_per_month": 0,
"basis": "one calendar connection fits one person"
},
"3_staff": {
"plan": "Standard",
"price_per_month": 30,
"basis": "3 seats x $10; round-robin booking needs Teams ($48)"
},
"10_staff": {
"plan": "Standard",
"price_per_month": 100,
"basis": "10 seats x $10; round-robin booking needs Teams ($160)"
}
},
{
"rival": "Acuity Scheduling",
"1_staff": {
"plan": "Starter",
"price_per_month": 16,
"basis": "1 calendar"
},
"3_staff": {
"plan": "Standard",
"price_per_month": 27,
"basis": "up to 6 calendars"
},
"10_staff": {
"plan": "Premium",
"price_per_month": 49,
"basis": "up to 36 calendars"
}
},
{
"rival": "Setmore",
"1_staff": {
"plan": "Free",
"price_per_month": 0,
"basis": "up to 4 users"
},
"3_staff": {
"plan": "Free",
"price_per_month": 0,
"basis": "up to 4 users"
},
"10_staff": {
"plan": "Pro",
"price_per_month": 50,
"basis": "10 users x $5"
}
},
{
"rival": "Square Appointments",
"1_staff": {
"plan": "Free",
"price_per_month": 0,
"basis": "plus card fees (3.3% + 30¢ online); no-show fees and multi-staff booking need Plus ($49 per location)"
},
"3_staff": {
"plan": "Free",
"price_per_month": 0,
"basis": "plus card fees (3.3% + 30¢ online); no-show fees and multi-staff booking need Plus ($49 per location)"
},
"10_staff": {
"plan": "Free",
"price_per_month": 0,
"basis": "plus card fees (3.3% + 30¢ online); no-show fees and multi-staff booking need Plus ($49 per location)"
}
}
],
"summary": [
{
"profile": "solo (1 staff)",
"rivals_at_0": "3 of 4",
"paid_prices": [
16
],
"median_paid": 16
},
{
"profile": "typical (3 staff)",
"rivals_at_0": "2 of 4",
"paid_prices": [
27,
30
],
"median_paid": 28.5
},
{
"profile": "larger (10 staff)",
"rivals_at_0": "1 of 4",
"paid_prices": [
49,
50,
100
],
"median_paid": 50
}
],
"left_out": [
{
"rival": "SimplyBook.me",
"why": "prices came back in EUR; no exchange rate was given, so it stays in the map but out of the USD math"
}
],
"how_metrics_scale": {
"Calendly": [
0,
30,
100
],
"Acuity Scheduling": [
16,
27,
49
],
"Setmore": [
0,
0,
50
],
"Square Appointments": [
0,
0,
0
]
}
},
"demand_signals": {
"market": "United States, English (location_code 2840)",
"volumes": "Google Ads monthly averages, 12 months to August 2026",
"group_totals": {
"Head": 3280,
"Price research": 5580,
"Free-seeking": 8350,
"Switching": 370,
"Segment": 1890,
"Enterprise": 80
},
"close_variants": {
"salon booking software": "same volume, CPC and monthly trend as \"booking software for salons\"; counted once in the group total"
},
"free_seeking_share": {
"value": "60%",
"math": "8,350 / (8,350 + 5,580)"
},
"leader_free_check": {
"value": 0.84,
"math": "(\"is calendly free\" 2,400 + \"calendly free plan\" 1,300) / \"calendly pricing\" 4,400",
"reading": "for every 100 searches for Calendly's pricing there are 84 asking whether it is free"
},
"segment_cpc_index": {
"head_keyword": "appointment scheduling software",
"head_cpc_usd": 28.09,
"rows": [
{
"segment": "salons",
"keyword": "booking software for salons",
"monthly_searches": 720,
"cpc_usd": 86.6,
"cpc_index": 3.08,
"qualifies_for_package": true
},
{
"segment": "salons",
"keyword": "salon booking software",
"monthly_searches": 720,
"cpc_usd": 86.6,
"cpc_index": 3.08,
"qualifies_for_package": true,
"close_variant_of": "booking software for salons"
},
{
"segment": "studios",
"keyword": "booking software for studios",
"monthly_searches": "no data",
"cpc_usd": "no data",
"cpc_index": "no data",
"qualifies_for_package": false
},
{
"segment": "studios",
"keyword": "studio booking software",
"monthly_searches": 20,
"cpc_usd": 58.1,
"cpc_index": 2.07,
"qualifies_for_package": false
},
{
"segment": "clinics",
"keyword": "booking software for clinics",
"monthly_searches": "no data",
"cpc_usd": "no data",
"cpc_index": "no data",
"qualifies_for_package": false
},
{
"segment": "clinics",
"keyword": "clinic booking software",
"monthly_searches": 10,
"cpc_usd": 38.39,
"cpc_index": 1.37,
"qualifies_for_package": false
},
{
"segment": "small business",
"keyword": "booking software for small business",
"monthly_searches": 260,
"cpc_usd": 46.16,
"cpc_index": 1.64,
"qualifies_for_package": false
},
{
"segment": "small business",
"keyword": "scheduling software for small business",
"monthly_searches": 880,
"cpc_usd": 45.07,
"cpc_index": 1.6,
"qualifies_for_package": false
}
]
},
"switching": {
"calendly alternative": 320,
"acuity scheduling alternative": 50
},
"enterprise_volume": 80,
"no_data_keywords": [
"appointment scheduling software cost",
"booking software for studios",
"booking software for clinics"
],
"no_cpc_keywords": [
"scheduling software pricing",
"appointment scheduling software cost",
"online booking system cost",
"simplybook pricing",
"booking software for studios",
"booking software for clinics"
],
"keyword_table": [
{
"group": "Head",
"keyword": "appointment scheduling software",
"monthly_searches": 2400,
"cpc_usd": 28.09,
"competition": "LOW"
},
{
"group": "Head",
"keyword": "appointment scheduling app",
"monthly_searches": 880,
"cpc_usd": 22.7,
"competition": "HIGH"
},
{
"group": "Price research",
"keyword": "scheduling software pricing",
"monthly_searches": 10,
"cpc_usd": "no data",
"competition": "no data"
},
{
"group": "Price research",
"keyword": "appointment scheduling software cost",
"monthly_searches": "no data",
"cpc_usd": "no data",
"competition": "no data"
},
{
"group": "Price research",
"keyword": "online booking system cost",
"monthly_searches": 10,
"cpc_usd": "no data",
"competition": "MEDIUM"
},
{
"group": "Price research",
"keyword": "calendly pricing",
"monthly_searches": 4400,
"cpc_usd": 8.61,
"competition": "LOW"
},
{
"group": "Price research",
"keyword": "acuity scheduling pricing",
"monthly_searches": 720,
"cpc_usd": 15.54,
"competition": "MEDIUM"
},
{
"group": "Price research",
"keyword": "setmore pricing",
"monthly_searches": 110,
"cpc_usd": 29.13,
"competition": "MEDIUM"
},
{
"group": "Price research",
"keyword": "simplybook pricing",
"monthly_searches": 10,
"cpc_usd": "no data",
"competition": "MEDIUM"
},
{
"group": "Price research",
"keyword": "square appointments pricing",
"monthly_searches": 320,
"cpc_usd": 2.59,
"competition": "MEDIUM"
},
{
"group": "Free-seeking",
"keyword": "free scheduling software",
"monthly_searches": 1000,
"cpc_usd": 26.26,
"competition": "HIGH"
},
{
"group": "Free-seeking",
"keyword": "free appointment scheduling software",
"monthly_searches": 260,
"cpc_usd": 17.54,
"competition": "MEDIUM"
},
{
"group": "Free-seeking",
"keyword": "free online booking system",
"monthly_searches": 480,
"cpc_usd": 26.29,
"competition": "HIGH"
},
{
"group": "Free-seeking",
"keyword": "free scheduling app",
"monthly_searches": 2900,
"cpc_usd": 23.17,
"competition": "HIGH"
},
{
"group": "Free-seeking",
"keyword": "cheap scheduling software",
"monthly_searches": 10,
"cpc_usd": 32.66,
"competition": "HIGH"
},
{
"group": "Free-seeking",
"keyword": "is calendly free",
"monthly_searches": 2400,
"cpc_usd": 28.6,
"competition": "LOW"
},
{
"group": "Free-seeking",
"keyword": "calendly free plan",
"monthly_searches": 1300,
"cpc_usd": 12.65,
"competition": "LOW"
},
{
"group": "Switching",
"keyword": "calendly alternative",
"monthly_searches": 320,
"cpc_usd": 11.5,
"competition": "MEDIUM"
},
{
"group": "Switching",
"keyword": "acuity scheduling alternative",
"monthly_searches": 50,
"cpc_usd": 9.89,
"competition": "MEDIUM"
},
{
"group": "Segment",
"keyword": "booking software for salons",
"monthly_searches": 720,
"cpc_usd": 86.6,
"competition": "MEDIUM"
},
{
"group": "Segment",
"keyword": "salon booking software",
"monthly_searches": 720,
"cpc_usd": 86.6,
"competition": "MEDIUM"
},
{
"group": "Segment",
"keyword": "booking software for studios",
"monthly_searches": "no data",
"cpc_usd": "no data",
"competition": "no data"
},
{
"group": "Segment",
"keyword": "studio booking software",
"monthly_searches": 20,
"cpc_usd": 58.1,
"competition": "MEDIUM"
},
{
"group": "Segment",
"keyword": "booking software for clinics",
"monthly_searches": "no data",
"cpc_usd": "no data",
"competition": "no data"
},
{
"group": "Segment",
"keyword": "clinic booking software",
"monthly_searches": 10,
"cpc_usd": 38.39,
"competition": "HIGH"
},
{
"group": "Segment",
"keyword": "booking software for small business",
"monthly_searches": 260,
"cpc_usd": 46.16,
"competition": "HIGH"
},
{
"group": "Segment",
"keyword": "scheduling software for small business",
"monthly_searches": 880,
"cpc_usd": 45.07,
"competition": "MEDIUM"
},
{
"group": "Enterprise",
"keyword": "enterprise scheduling software",
"monthly_searches": 70,
"cpc_usd": 87.61,
"competition": "MEDIUM"
},
{
"group": "Enterprise",
"keyword": "scheduling software for teams",
"monthly_searches": 10,
"cpc_usd": 73.69,
"competition": "MEDIUM"
}
]
},
"own_signals": {
"4a_search_console": "not run: no site yet",
"4b_ga4": "not run: no site yet",
"4c_stripe": "not run: no billing yet (Stripe path untested until connected)"
},
"decisions": [
{
"id": "D1",
"decision": "Entry offer",
"rule": "Free plan when the free-seeking share is 40% or more and at least half the rivals cost $0 at the smallest profile; trial only under 25% with fewer than half free; otherwise test both.",
"numbers": "free-seeking share 60%; 3 of 4 USD rivals cost $0 for 1 staff (Calendly, Setmore, Square)",
"verdict": "Free plan, capped at the smallest profile (1 staff). Ask for no card: Acuity and SimplyBook.me both advertise \"no credit card needed\" for their trials."
},
{
"id": "D2",
"decision": "Value metric",
"rule": "Grows with value, predictable, hard to game, measurable, accepted by the category.",
"numbers": "price for 1/3/10 staff: Calendly [0, 30, 100] (per seat), Acuity [16, 27, 49] (calendar band), Setmore [0, 0, 50] (per user after a free 4), Square [0, 0, 0] (per location, card fees on top)",
"verdict": "Staff band (rungs by the number of staff who take bookings). It grows with the business like a seat price but in steps buyers can predict; per-seat pricing reaches $100 at 10 staff, 2x the median. Bands are already accepted here (Acuity by calendars, SimplyBook.me by included providers)."
},
{
"id": "D3",
"decision": "Price points",
"rule": "Core at or under the median paid price at the typical profile, Growth at or under the median at the large profile; adjacent paid plans 1.3x to 3x apart.",
"numbers": "median paid at 3 staff $28.50 (from [27, 30]); at 10 staff $50 (from [49, 50, 100]); Growth/Core = 1.75x",
"verdict": "Core ceiling $28.50 a month, Growth ceiling $50 a month, both billed annually; the 1.75x step is inside the 1.3x to 3x range. Pick the exact price inside the ceiling with the Gabor-Granger ladder (Step 8)."
},
{
"id": "D4",
"decision": "Plan count",
"rule": "Three rungs by default; four or more only when the median paid price at the large profile is 5x or more the median at the typical profile.",
"numbers": "$50 / $28.50 = 1.75x",
"verdict": "Three rungs (Free, Core, Growth) plus the contact-us rung from D5."
},
{
"id": "D5",
"decision": "Enterprise rung",
"rule": "Add a contact-us rung when at least half the rivals show one; don't lead with it when enterprise searches are under 100 a month.",
"numbers": "5 of 5 rivals show one (Calendly, Acuity Scheduling, Setmore, Square Appointments, SimplyBook.me); enterprise searches 80 a month",
"verdict": "Add a contact-us rung for multi-location businesses and larger teams, listed last; don't lead with it."
},
{
"id": "D6",
"decision": "Annual billing",
"rule": "Match the rivals' median annual saving, kept within 15% to 25%; show annual prices by default only when most rivals do.",
"numbers": "largest saving each page shows: {'Calendly': 20, 'Acuity Scheduling': 20, 'SimplyBook.me': 17}, median 20% (Calendly's plans show 17% and 20%, headed \"Save up to 20%\"; Setmore's second amount is unlabelled and Square shows no annual option, so both are left out; percentages carry no currency, so SimplyBook.me counts); 4 of 5 rivals show the annual price first (Calendly, Acuity Scheduling, Setmore, SimplyBook.me)",
"verdict": "20% off for annual billing, with annual prices shown by default."
},
{
"id": "D7",
"decision": "Segment package",
"rule": "A segment keyword with a CPC index of 2 or more and 100 or more searches a month earns a dedicated package, priced against the rival plan that names the same segment and 1.3x to 3x the plan it builds on, all in one unit.",
"numbers": "tested for every segment in the request (salons, studios, clinics) plus small business, against the head CPC $28.09: \"booking software for salons\" index 3.08 at 720 searches; \"salon booking software\" index 3.08 at 720 searches; \"booking software for studios\" no data; \"studio booking software\" index 2.07 at 20 searches; \"booking software for clinics\" no data; \"clinic booking software\" index 1.37 at 10 searches; \"booking software for small business\" index 1.64 at 260 searches; \"scheduling software for small business\" index 1.6 at 880 searches",
"verdict": "Build a salon package: salons are the only segment that qualifies; advertisers pay 3.08x the head-term CPC for salon buyers at 720 searches a month. Studio terms reach the CPC index (2.07) but not the volume, clinic terms reach neither, and small-business terms sit under index 2, so none of them earns its own package. Square names the segment (Premium, \"for large salons\", $149 a month per location, billed monthly). Price the package in the same unit as Growth, one account at one location: $65 to $149 a month, which is 1.3x to 2.98x the Growth ceiling ($50) and at or under Square Premium for one location. Square charges again for every extra location, so compare at one location only; a second location moves to the contact-us rung."
},
{
"id": "D8",
"decision": "Value ceiling",
"rule": "Only with value inputs: price at or under 10% to 25% of the monthly value one customer gets, and above the cost to serve.",
"numbers": "no value inputs given",
"verdict": "Not run. Give what one customer gains a month (for example no-shows avoided x average booking value) and the cost to serve one, and this check runs."
}
],
"recommended_plans": [
{
"rung": "Free",
"metric": "1 staff",
"price_ceiling": 0,
"for": "solo professionals trying online booking",
"moves_up_when": "a second person needs their own calendar"
},
{
"rung": "Core",
"metric": "2 to 6 staff",
"price_ceiling": 28.5,
"billing": "per month, billed annually",
"badge": "the plan to badge",
"for": "the typical studio or salon (3 staff)",
"moves_up_when": "a seventh staff member, or reminders by text at volume"
},
{
"rung": "Growth",
"metric": "7 to 20 staff",
"price_ceiling": 50,
"billing": "per month, billed annually",
"for": "larger teams (10 staff)",
"moves_up_when": "more than 20 staff or a second location"
},
{
"rung": "Salon package",
"metric": "Growth limits (up to 20 staff, one location) plus salon features",
"price_range": [
65,
149
],
"billing": "per month, billed annually, one location",
"for": "salons: deposits and no-show fees, multi-staff appointments, chairs and stations as resources, waitlist (the features rivals keep for their salon plans)",
"moves_up_when": "a second location (contact-us rung)"
},
{
"rung": "Contact us",
"metric": "custom",
"price_ceiling": null,
"for": "multi-location businesses and larger teams",
"moves_up_when": "n/a; listed last, not featured"
}
],
"value_ladder": {
"rungs": [
"Free",
"Core",
"Growth",
"Salon package",
"Contact us"
],
"band_rule": "Each paid rung covers up to twice the profile it is priced for (Core for 3 staff goes to 6, Growth for 10 goes to 20), so a growing customer has headroom before the next step.",
"add_ons_the_market_sells": [
{
"add_on": "Text reminder credits",
"seen_at": "Square (3¢ per text over the included amount), Setmore (bought in the app), SimplyBook.me (SMS credits)",
"answers": "a Core customer who wants more reminders without moving to Growth"
},
{
"add_on": "Setup service",
"seen_at": "SimplyBook.me (Full Setup from €450)",
"answers": "a salon switching from another tool"
},
{
"add_on": "AI booking assistant",
"seen_at": "Calendly (Callie, on Standard or Teams), SimplyBook.me (AI booking credits), Acuity (included on Premium)",
"answers": "a busy front desk"
},
{
"add_on": "Phone receptionist",
"seen_at": "Setmore ($99 a month, US only)",
"answers": "businesses that lose bookings to missed calls"
}
],
"gaps": [
{
"between": "Free -> Core",
"check": "no ratio for a $0 rung; the upgrade trigger is the second staff member",
"flag": false
},
{
"between": "Core -> Growth",
"check": "1.75x",
"flag": false
},
{
"between": "Growth -> Salon package",
"check": "1.3x to 2.98x ($65 to $149 against $50), both priced per account at one location",
"flag": false
},
{
"between": "Add-ons",
"check": "a $99 receptionist add-on would cost more than the Growth plan ($50); sell it as a separate service, as Setmore does",
"flag": true
}
]
},
"perception_review": {
"price_endings": "3 of 8 paid USD prices shown end in 9 ([49, 49, 149]); the rest end in other digits ([5, 10, 16, 16, 27]). SimplyBook.me ends every paid price in .9. No single convention, so pick the ending for the position: round for simple and premium, 9 for value.",
"badges_and_anchors": "Calendly badges its second paid plan (Teams, \"Popular plan\") and anchors with Enterprise \"starts at $15k/yr\"; Square badges Plus \"Best value\"; SimplyBook.me badges Premium \"Most popular\". Acuity and Setmore badge nothing. Badge Core, the plan most customers should pick.",
"billing_framing": "4 of 5 rivals show the annual-billed price first; savings are framed as a percent (\"Save 17%\", \"Save 20%\", \"Save up to 20%\"). Square shows monthly only.",
"entry_wording": "Calendly says \"Always free\" and \"Get started for free\"; Acuity repeats \"7-day trial, no credit card needed\" under every plan; SimplyBook.me puts \"No credit card needed.\" above its plans. Searchers ask: 84 \"is Calendly free\" type searches per 100 Calendly pricing searches. Say \"free for 1 staff, no card\" on the plan card itself.",
"plan_names": "Square adds a who-it's-for line to every plan (\"for solo professionals\", \"for growing teams\", \"for large salons\"); the others name size only (Starter, Standard, Premium, Pro). Name rungs by who they serve.",
"page_reading_note": "Three of five pages drew their prices with scripts, and Square's plan cards show a template placeholder instead of the trial length in the raw page. If your own prices are script-drawn too, search engines and AI assistants may not see them; put the prices in the page text.",
"your_page": "not run: a new product with no pricing page yet"
},
"validation_plan": {
"van_westendorp": "Ask salon and studio owners the four price questions after showing the Core description. Read at least 100 answers for salons and 100 for other studios, since D7 prices salons separately.",
"gabor_granger_ladder": {
"profile": "typical (3 staff)",
"rungs_usd": [
27,
28.5,
30,
37.5
],
"built_from": "lowest, median and highest paid rival price at 3 staff, plus 25% above the highest"
},
"conjoint": "Not needed for launch; use it later if the salon package grows into many feature differences.",
"experiments": [
{
"test": "Core at two ladder points",
"measure": "paid conversion and revenue per pricing-page visitor"
},
{
"test": "Free plan for 1 staff vs a 14-day reverse trial",
"measure": "paid conversion at day 30 and 90, not sign-ups"
},
{
"test": "Annual shown by default vs monthly",
"measure": "annual share and first-year revenue"
},
{
"test": "Salon package vs Growth with salon add-ons",
"measure": "salon plan mix and expansion revenue at 90 days"
}
],
"how": "New customers only, one change at a time, at least one full billing cycle each."
},
"unknowns": [
"Calendly: trial length (the FAQ mentions a trial; the answer text isn't on the page) and monthly-billed prices (only annual prices and the saving are shown).",
"Calendly, Acuity and Square: amounts came from the web-fetch fallback because the parsed pages had no prices; a second Calendly parse with enable_javascript also had none.",
"Setmore: the $12 shown next to the $5 Pro price has no billing label, so Setmore stays out of the annual-saving median.",
"Square: the trial length on the plan cards is script-drawn; 30 days is from the FAQ.",
"SimplyBook.me: prices came back in EUR; kept out of all USD medians.",
"Keywords with no volume data: appointment scheduling software cost, booking software for studios, booking software for clinics (counted as 0). Keywords with no CPC: scheduling software pricing, appointment scheduling software cost, online booking system cost, simplybook pricing, booking software for studios, booking software for clinics.",
"D8 value ceiling: not run, no value inputs.",
"Steps 4a to 4c (Search Console, GA4, Stripe): not run, the product is new and has no site traffic or billing yet."
],
"changes_made": "none; this skill only reads pages and data"
}
ReadyPricing Strategy
MarkdownUTF-8