Growth Engineering
Beyond the product, Pixy runs its own revenue automation: server-mediated upgrade and trial-conversion campaigns that turn the existing customer base into expansion revenue — designed so a discount cannot leak.
Design constraint
The problem with discount codes
A plain discount code, once emailed, spreads to strangers. Post it once on a forum and the margin on every future sale is gone. The usual mitigations — single-use codes, expiry dates — add administration without actually removing the shareable artifact.
The solution: no code to copy
Each recipient gets a /upgrade or /convert link carrying an RS256 JWT bound to their email and one specific licence key, signed with the server’s own RSA key and expiring in 14 days. The price is computed server-side from the token. There is no code, so there is nothing to share.
Mechanics
How an offer completes
-
Clicking the link opens a server-rendered offer page, proxied through the Paddle-approved domain so checkout actually opens. -
The page creates a Paddle transaction with an ad-hoc price attached to the real product — the discounted amount itself, not a coupon applied to a list price. -
On payment, the webhook rewrites that one licence in place: same key, same activated device, no reactivation. The customer does not have to re-enter anything. -
The whole path is idempotent — a unique transaction-id row makes a re-delivered webhook a no-op, so nobody is ever upgraded or charged twice.
Execution
Two campaigns on the same spine
| Campaign | Audience | Offer | On payment |
|---|---|---|---|
| Upgrade | 28 existing paying customers | Credited for what they already paid (flat credits by segment), offered the Ultimate Suite or the Generate Bundle at their device tier | Licence rewritten in place at the new tier |
| Trial conversion | 75 trial users, active and expired, excluding anyone who already bought | 25% off | Trial licence converted in place to a lifetime paid licence — real product, lifetime expiry, tool set, one device — guarded so it can only ever flip a still-trial licence |
Ultimate upgrades also trigger the free 70-pixel grant. Both campaigns notify admins over Telegram on checkout-open and on purchase, ship behind default-off feature flags, run entirely on additive schema, and were verified end-to-end — offer page, checkout, in-place licence change, tools unlocking in Revit — on controlled inboxes before any customer email went out.
A representative subtlety, found and fixed
An old single-tool licence upgraded to “all” kept its original purchase date, so the entitlement rule graded it as a grandfathered bundle and left the extended tools greyed out in Revit — a customer paying for Ultimate and not getting all of it.
The upgrade now refreshes purchase_date on conversion: the customer bought today’s Ultimate today, so every tool unlocks.