К основному содержанию
скилл CX Codex

rc-price-changes — скилл для Claude Code: смена цен в Android

Помогает провести новую цену подписки в Google Play через RevenueCat, не трогая код приложения.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add RevenueCat/ai-toolkit --skill rc-price-changes -a claude-code
Открыть на GitHub

Что делает rc-price-changes

Скилл включается, когда вы меняете цену уже существующего продукта подписки на Android и хотите, чтобы RevenueCat сам разобрался с когортами и согласием пользователей. Google Play делит такие изменения на два типа: opt out (обычно снижение цены или небольшое повышение в пределах порога Google) и opt in (крупное повышение). В первом случае новая цена вступает в силу на следующем продлении без действий пользователя, во втором Google показывает своё окно согласия, и при отказе подписка отменяется в конце периода.

RevenueCat обрабатывает SUBSCRIPTION_PRICE_CHANGE_UPDATED и связанные RTDN на своём бэкенде и обновляет CustomerInfo, когда меняется когорта или статус согласия. Приложение читает entitlements как обычно. Для большинства сценариев писать что-то в приложении или на сервере не нужно — работа идёт в Play Console и панели RevenueCat. Если хотите показать новую цену на пейволе сразу для новых покупателей, обновите offerings после того, как изменение разойдётся: вызов SDK остаётся прежним, Purchases.sharedInstance.awaitOfferings(), а цену берёте из pkg.product.price.formatted.

Своё окно согласия строить не надо, его показывает Google Play. Отказы приходят вебхуком CANCELLATION — обрабатывайте их как любую другую отмену на сервере. Старые подписчики платят прежнюю цену, пока Google их не мигрирует, и в SDK этого не видно: это забота Play. Учтите, что pkg.product.price.formatted корректен только для новых покупок.

Какие задачи решает

  • развести снижение цены и крупное повышение по путям opt out и opt in
  • провести новую цену подписки на Android без правок в приложении
  • обновить offerings, чтобы пейвол показывал новую цену новым покупателям
  • поймать отказ от повышения через вебхук CANCELLATION
  • сверить обновлённую цену продукта в панели RevenueCat после Play Console

Примеры запросов агенту

  • Проведи изменение цены подписки на Android через RevenueCat: подскажи, opt out это или opt in
  • Обнови offerings, чтобы пейвол показывал новую цену для новых покупателей
  • Пользователь отказался от повышения цены — что придёт в вебхуке и как это обработать

Как установить rc-price-changes

1Через Skills CLI (Vercel)

npx skills add RevenueCat/ai-toolkit --skill rc-price-changes -a claude-code

2Вручную: положить файлы

~/.claude/skills/rc-price-changes/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/rc-price-changes/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора25

rc-catalog-management Ведёт каталог Android-товаров между Play Console и панелью RevenueCat: импорт продуктов, привязка к entitlement, сборка офферов. CX Codex +1 627установок rc-subscription-states Скилл для Android-проектов на RevenueCat: подсказывает агенту, как проверять доступ к платному контенту через CustomerInfo и EntitlementInfo. CX Codex +1 623установок rc-error-handling Разбирает ошибки RevenueCat Android SDK: какой код что значит и что показать пользователю. Пригодится, когда платёжный флоу ломается на проде. CX Codex +1 627установок rc-revenuecat-api-quick-reference Справочник по Android SDK 10.x и REST API RevenueCat прямо в редакторе: сигнатуры вызовов, структура Offerings, поля CustomerInfo. CX Codex +1 624установок rc-understanding-revenuecat Объясняет агенту, как устроен RevenueCat Android SDK 10.x, до того как он напишет хоть строчку кода. Пригодится, если вы переходите с чистого Play Billing. CX Codex +1 617установок rc-cancellations-pauses-winback Показывает в Android-приложении отмену подписки, паузу и возврат клиента. Помогает не гадать, что происходит с доступом. CX Codex +1 612установок rc-revenuecat-vs-raw-billing Скилл помогает решить, брать RevenueCat или писать Google Play Billing напрямую: показывает, что уходит на сторону SDK, а что остаётся вашей команде. CX Codex +1 601установок rc-alternative-billing Скилл помогает разобраться, какие программы альтернативного биллинга Google Play закрывает RevenueCat Android SDK, а какие придётся делать самому. CX Codex +1 603установок

Похожие

capacitor-in-app-purchases capawesome-team Скилл ведёт агента по шагам: настройка товаров в App Store Connect и Google Play Console, выбор плагина, покупки, валидация чеков и тесты в песочнице. CX Codex +1 728установок asc-revenuecat-catalog-sync rorkai Сверяет каталог подписок и встроенных покупок App Store Connect с продуктами RevenueCat. Нужен перед запуском или при устранении расхождений между каталогами. CX Codex +1 6 100установок paywall-optimization appeeky Скилл для аудита и A/B-тестов пейвола в подписочных приложениях. Помогает найти слабую ступень воронки и починить её. CX Codex +1 1 900установок subscription-lifecycle appeeky Скилл помогает разбирать подписочный цикл от пробного периода до продления, отмены и возврата ушедших подписчиков. Нужен для анализа конверсии, оттока и неудачных платежей. CX Codex +1 2 500установок stripe-best-practices stripe Скилл помогает выбирать API Stripe, настраивать платежи и проверять безопасность интеграции. Пригодится при разработке, тестировании и ревью. CX Codex +1 98 100установок clerk-billing clerk Скилл для работы с Clerk Billing: тарифы, чекаут, ограничение функций по плану и вебхуки подписок. CX Codex +1 16 900установок

Рядом в теме «Мобильная разработка»

Всё по теме «Мобильная разработка» →

Вопросы о rc-price-changes

Как установить rc-price-changes в Claude?

Выполните npx skills add RevenueCat/ai-toolkit --skill rc-price-changes -a claude-code. Скилл появится в ~/.claude/skills/rc-price-changes/SKILL.md.

Что делает rc-price-changes?

Проводит смену цены существующей подписки на Android через RevenueCat: объясняет разницу между opt out и opt in, напоминает про обработку RTDN на бэкенде RevenueCat и про настройку в Play Console и панели.

Нужно ли писать своё окно согласия?

Нет. Для opt in повышений окно согласия показывает Google Play, а RevenueCat обновляет CustomerInfo, когда исход согласия известен. При отказе подписка отменяется в конце периода и приходит вебхук CANCELLATION.

Исходный текст

SKILL.md · MIT
---
name: rc-price-changes
description: Use this skill when rolling out subscription price changes on Android with RevenueCat. Covers opt out decreases versus opt in increases, RevenueCat's automatic handling of the change confirmation flow, and the dashboard configuration involved.
license: Apache-2.0; see LICENSE
metadata:
  author: RevenueCat
  source: revenuecat-handbook chapter 14
  keywords:
  - android
  - revenuecat
  - price-change
  - opt-in
  - opt-out
---

# Price Changes

Use this skill when you roll out a new price for an existing subscription product on Android and want RevenueCat to manage the cohort and consent plumbing for you.

## Phase 1: Understand

Google Play supports two kinds of price changes for active subscribers:

- Opt out changes (typically decreases, and increases within Google's opt out threshold). The new price applies automatically at the next renewal. No user action required.
- Opt in changes (larger increases). Google shows its own in app consent dialog. If the user consents, they continue at the new price. If they decline, the subscription cancels at period end.

RevenueCat processes `SUBSCRIPTION_PRICE_CHANGE_UPDATED` and related RTDNs on its backend and updates `CustomerInfo` when a subscriber's cohort or consent state changes. Your app reads entitlements the same way it always does.

For most price change scenarios, there is nothing to implement in your app or backend.

## Phase 2: Plan

Decide which path applies before you touch anything.

| Question | Opt out | Opt in |
| --- | --- | --- |
| Typical trigger | Decrease, or small increase within Google's threshold | Larger increase above Google's threshold |
| User consent | Not required | Required, prompted by Google Play UI |
| If user declines | N/A | Subscription cancels at period end, `CANCELLATION` webhook fires |
| New price applies | Automatically at next renewal | After user consents in Play's dialog |
| RTDN RevenueCat consumes | `SUBSCRIPTION_PRICE_CHANGE_UPDATED` | `SUBSCRIPTION_PRICE_CHANGE_UPDATED`, then `SUBSCRIPTION_CANCELED` if declined |
| App code change | None required | None required |
| Paywall price source | `pkg.product.price.formatted` (new purchases only) | `pkg.product.price.formatted` (new purchases only) |

Questions to answer before executing:

- Is the change a decrease, a small increase, or a larger increase? That determines opt out vs opt in.
- Do you want to notify existing subscribers in app before the change takes effect? That is optional, driven by a webhook or a Targeting rule, not a requirement.
- Which legacy cohorts exist today? Existing subscribers keep paying their old price until Google migrates them. This is a Google Play concern, not visible in the SDK.

## Phase 3: Execute

Most of the work is in the Play Console and the RevenueCat dashboard. Your app stays the same.

### 1. Update the price in Play Console

In Google Play Console, open the subscription, select the base plan, and edit the price. Google will prompt you to choose how existing subscribers are treated (opt out vs opt in) based on the magnitude of the change and your region.

### 2. Let RevenueCat pick up the change

RevenueCat processes the RTDNs from Google automatically. You do not need to toggle anything in the RevenueCat dashboard for the price change itself. Confirm the updated product price appears on the product in the RevenueCat dashboard after Google propagates it.

### 3. Refresh offerings in the client (optional)

If you want the paywall to show the new price immediately for new purchasers, refresh offerings after the Play Console change propagates. The SDK call is unchanged:

```kotlin
val offerings = Purchases.sharedInstance.awaitOfferings()
val pkg = offerings.current?.availablePackages?.firstOrNull() ?: return
val displayPrice = pkg.product.price.formatted
```

Legacy cohort subscribers continue to pay their old price until Google migrates them. `pkg.product.price.formatted` is always correct for new purchases.

### 4. Observe CustomerInfo on consent resolution

For opt in increases, RevenueCat updates `CustomerInfo` when the consent outcome is known. Read entitlements the usual way.

```kotlin
val info = Purchases.sharedInstance.awaitCustomerInfo()
val isPro = info.entitlements["pro"]?.isActive == true
```

Do not build a consent dialog. Google Play shows it.

### 5. Handle declines via webhook, if you care

If the user declines the opt in increase, the subscription cancels at period end. RevenueCat fires a `CANCELLATION` webhook event. Treat it the same way you treat any other cancellation on the server side.

### 6. Optional: notify affected users

If you want to warn subscribers about an upcoming increase before Google's dialog appears, drive an in app banner from a RevenueCat webhook event or show a specific Offering to the affected cohort with a Targeting rule. This is an enhancement, not part of the price change contract.

## References

- [Full chapter](https://www.revenuecat.com/guides/revenuecat-android-sdk/price-changes)

© RevenueCat · MIT · RevenueCat/ai-toolkit

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой