Guide · Chapter 4 of 4

Measuring and shipping paywall changes

Fast iteration needs two habits: a way to change a paywall without risk, and a way to see what happened afterwards. This chapter covers the loop and is candid about what Tierux measures today.

The edit loop

Server-driven config lets you change a live screen in minutes, which is exactly why it needs guard rails. The shipped workflow has three of them.

  1. Preview and confirm. Write tools such as create_paywall, update_paywall, and create_winback_offer first return a preview and a confirmToken. A human approves the preview, then the same tool is called again with the token. The token is bound to the exact content previewed, so changing the input invalidates it.
  2. Draft. An update_paywall patch changes only the fields you pass and saves the result as a draft. It does not change what users see.
  3. Publish. publish_paywall promotes the saved draft to the served version. It needs no second confirm token because it only promotes content that was already saved and approved.

Creating a brand-new paywall is the exception: confirming create_paywall saves and publishes it in one step, so it goes live once your agent completes setup. Later edits stay drafts until you publish. Because the client route serves only the published snapshot, an unpublished draft is invisible to end users, and a paywall that was never published answers not found.

Shipping a change safely

What you can measure today

Tierux's measurement surface is built around entitlements and lifecycle events, not around paywall impressions. The dashboard analytics service reports, per app: how many entitlements are currently active (grace period included), purchase verifications in the last 24 hours and per day over the last seven, and a count of entitlements by status — active, grace period, account hold, cancelled, and expired.

For individual subscribers, an append-only billing timeline records renewals, billing retry, grace period, cancellation pending, expiry, refunds, and admin notes, derived from purchase verifications and lifecycle notifications. It powers the support timeline and the get_user_timeline tool.

Question after a changeWhere to lookAvailable today?
Are verified purchases still arriving?Verifications in the last 24 hours and 7 daysYes
Did cancellations rise?Cancelled count in the status breakdown; cancellation-pending timeline eventsYes
Is a specific subscriber's history what I expect?Billing timeline for that userYes
Did the save sheet recover a subscriber?That user's entitlement and timeline after the flow; the win-back result in your appIndirectly, per user and per app
Which paywall variant converted better?Not part of the shipped paywall specNo built-in experiment or funnel reporting

Sources: src/services/entitlementAnalyticsService.ts and the billing timeline types in src/types.ts. Verification required if a funnel or experiment feature has shipped since this page was last updated.

That last row is deliberate. The paywall spec does not include variant testing or impression-to-purchase funnels, so this guide does not describe them and neither should you assume them. If you need conversion analysis, pair a change with your own product analytics and compare against the entitlement and timeline signals above. This guide also quotes no benchmark numbers, because none are grounded in Tierux data.

Getting lifecycle events out

If you want these signals in your own systems, Tierux can forward lifecycle events to your backend as signed HTTP POSTs; see the webhooks docs. That is the practical route for joining paywall publishes to subscription outcomes in a warehouse or dashboard you already run.

A checklist to close on

Related reading

Glossary: Paywall

The screen you are iterating on.

Glossary: Win-back

The save offer whose effect you can observe per subscriber.

Glossary: Churn

The cancellation rate you will be watching after a change.

Docs: MCP setup

Connecting an agent to the tools that preview, draft, and publish paywalls.

Blog: Setting up MCP for AI agent billing

The preview-then-confirm workflow in practice.

Docs: Webhooks

Forwarding lifecycle events to your own backend.

← Back to the paywalls and win-back guide

Publish paywall changes with a preview first

Free tier — unlimited apps, 1 paywall. No credit card, no revenue share.

Start free